X86_64 ROS - 64bit Mikrotik

Architecture x86_64 bit

It works very well and efficiently.
I don’t know why Mikrotik not given officially as a start.
I know about the x86_64 bit stabel since May 2016 years
There are several important settings to work, but mikrotik nothing reports about them.

[admin@MikroTik] /system resource> print
uptime: 1h37m39s
version: 6.38.1 (stable)
build-time: Jan/13/2017 05:51:35
free-memory: 23.0GiB
total-memory: 23.5GiB
cpu: Intel(R)
cpu-count: 24
cpu-frequency: 3066MHz
cpu-load: 59%
free-hdd-space: 462.0GiB
total-hdd-space: 462.1GiB
write-sect-since-reboot: 680
write-sect-total: 680
architecture-name: x86_64
board-name: x86
platform: MikroTik

Regards,
Krzysztof Pawluk
krzysztof@pawluk.org

there is a reason why RouterOS on x86 supports only 2GB - the speed of memory addressing. With high/low setups you would lose 5 to 10% of performance.

It is entirely dependent on the memory controller. In the past that may be so when extended memory support wasnt available. From the last decade every PC has extended memory support in the controller itself allowing for more than 4GB of ram to be addressed in 32 bit mode especially if the CPU is a 64 bit architecture as there wont be any performance penalty in that case.

Besides even if it isnt true and you get performance penalty, not having enough ram will cause even more performance issues.

This is CHR or ?

5-10% it’s not a problem at all. I doubt this will be the case but as we have 1-20% load on x86 it will not be an issue. On the other hand, 2GB of RAM which ROS see, is a big PROBLEM.

As SystemErrorMessage said, nowadays memory controllers are very fast, so we will not lose any of performance.

You will, in fact. And that is a well known fact. Memory controller won’t help you when it comes to a twice as large pointer size.

Having said that, I don’t think it’s a real reason why RouterOS x64 does not exist outside of the CHR world.

5-10% penalty from memory is if you use registered/buffered ram for those using large amount of ram. So unless you plan to have more than 80GB of ram this doesnt matter. The memory controller will work at the same speed relatively regardless of the amount of ram for the memory controller on the CPU. Since it is on the CPU it is so fast with very fast bus to the CPU that the amount of memory, pointer sizes and such dont matter.

Look at the x86 architecture now, the memory controller will be just as fast regardless of memory size as for a 64 bit CPU, the pointer size will also be 64 bits. This isnt trying to use extended memory on a 32 bit system where extra processing is added to the controller.

you say 5-10% less memory performance. Lets take a typical dual channel memory system, you have 2x1GB vs 2x4GB, both have the same frequency, timings, etc. Will addressing all the 8GB really make it slower? I mean if the ram bandwidth is 32GB/s does it matter how much memory because im pretty sure even with extra load that memory controller is still gonna work at 32GB/s limited by the ram itself and not the controller.

As i said not having enough RAM is a bigger performance killer than an insignificant difference in ram speed from having more ram if such even exists.

You write not truth.
Mikrotik X64 work very well on the X86 platform.
I have such of a platform

[admin@MikroTik] /system resource> print
uptime: 1h37m39s
version: 6.38.1 (stable)
build-time: Jan/13/2017 05:51:35
free-memory: 23.0GiB
total-memory: 23.5GiB
cpu: Intel(R)
cpu-count: 24
cpu-frequency: 3066MHz
cpu-load: 59%
free-hdd-space: 462.0GiB
total-hdd-space: 462.1GiB
write-sect-since-reboot: 680
write-sect-total: 680
architecture-name: x86_64
board-name: x86
platform: MikroTik

Regards,
Krzysztof Pawluk

Where did you get an x64 build of RouterOS that is not CHR and that is natively working on bare metal?

Mine looks like this:

                   uptime: 3w6d2h8m41s
                  version: 6.38.1 (stable)
               build-time: Jan/13/2017 05:51:35
              free-memory: 1735.3MiB
             total-memory: 1893.8MiB
                      cpu: Intel(R)
                cpu-count: 4
            cpu-frequency: 2666MHz
                 cpu-load: 0%
           free-hdd-space: 73.1GiB
          total-hdd-space: 73.3GiB
  write-sect-since-reboot: 4978130
         write-sect-total: 4978130
        architecture-name: x86
               board-name: x86
                 platform: MikroTik

It seems that krzysztof manually changed architecture-name: x86 to architecture-name: x86_64 only in post.

Think Mikrotik must change the licensing policy…

Please ask a little fee for the upgrade, rather to ignore the x86

Lets do x86 upgrade for some awsome fee, but you still earn a very big profit and the most important -

Respect from Your patriots.

Now Your are loosing them…

So Mikrotik let the x86_64 come out..

Kind Regards

Aleksnder

Use CHR, it is free and has 64bit support

Normis, please explain then how CHR can use all CPU PCI-E Lanes and be equal in performance to X86 especially with 10G interfaces?

I got an idea Normis.

How about this.

Eventually deprecate the x86 installation. Then go to something like The Yocto Project and build a very lean Linux VM hypervisor but only for a singular VM, the CHR VM. Make it a completely automated installation and have it setup as a baseline Linux/KVM with one CHR host.

That way there’s always a stable, sustainable, and really fast hypervisor/CHR host. As well as a completely separated and uninterrupted RouterOS installation that can be tuned without having to constantly add tons and tons of drivers. Then one can let the Linux kernel to add drivers and said drivers for said devices can be imported to the CHR through the VM hypervisor as generic interfaces.

It almost seems like a triple win. Really lean VM host + non-changing RouterOS/CHR environment + abstraction of all device drivers as generic interfaces that can be further optimized.

The ONLY thing that would need to happen is that there needs to be better 10Gb/sec optimizations between CHR and the hardware so that one can actually achieve those data rates.

he also ‘changed’ free- and total-memory :slight_smile:

now just look at ‘Extra packages’ links in Download page. this .zip contains everything including ‘system’ package (which contains the kernel, I believe :slight_smile:)

X86 link:
https://download2.mikrotik.com/routeros/6.38.3/all_packages-x86-6.38.3.zip

CHR link:
https://download2.mikrotik.com/routeros/6.38.3/all_packages-x86-6.38.3.zip

now find the difference

so seems like ‘x86_64’ is just a flag somewhere in the file system

by the way, I have old good RouterOS virtual machine which was installed when no CHR existed:

[admin@TestPlace] > system resource print 
                   uptime: 1w1d2h51m41s
                  version: 6.39rc38 (testing)
               build-time: Feb/24/2017 08:46:35
              free-memory: 21.7MiB
             total-memory: 88.4MiB
                      cpu: Intel(R)
                cpu-count: 1
            cpu-frequency: 2933MHz
                 cpu-load: 0%
           free-hdd-space: 58.8MiB
          total-hdd-space: 99.2MiB
  write-sect-since-reboot: 394778
         write-sect-total: 394778
        architecture-name: x86_64
               board-name: x86
                 platform: MikroTik

in some early v6 versions there was a checkbox under ‘System → Resources → Hardware’ for enabling 64-bit mode. looks like they removed it and created the CHR as a separate system

let’s have an experiment. starting with this:

[admin@MikroTik] > sys resource pr
                   uptime: 3m32s
                  version: 6.30rc20
               build-time: Jun/12/2015 14:48:23
              free-memory: 231.6MiB
             total-memory: 249.7MiB
                      cpu: Intel(R)
                cpu-count: 2
            cpu-frequency: 2933MHz
                 cpu-load: 0%
           free-hdd-space: 73.4MiB
          total-hdd-space: 99.1MiB
  write-sect-since-reboot: 514
         write-sect-total: 514
        architecture-name: x86
               board-name: x86
                 platform: MikroTik

upgrade it to v6.31:

[admin@MikroTik] > sys resource print 
                   uptime: 55s
                  version: 6.31
               build-time: Aug/14/2015 15:42:51
              free-memory: 233.8MiB
             total-memory: 250.0MiB
                      cpu: Intel(R)
                cpu-count: 1
            cpu-frequency: 2933MHz
                 cpu-load: 0%
           free-hdd-space: 65.6MiB
          total-hdd-space: 99.1MiB
  write-sect-since-reboot: 614
         write-sect-total: 614
        architecture-name: x86
               board-name: x86
                 platform: MikroTik

(look at ‘cpu-count: 1’ - probably, that’s the reason why download links for that version don’t work)

go to System → Resource → Hardware - check ‘Allow x86-64’ (in WinBox. can’t find it in CLI). reboot

and voila!.. oops, ‘architecture-name: x86’ :slight_smile: no worry, just upgrade to the latest version:

[admin@MikroTik] > /sys resource print 
                   uptime: 1m24s
                  version: 6.38.3 (stable)
               build-time: Feb/07/2017 09:52:42
              free-memory: 200.2MiB
             total-memory: 221.8MiB
                      cpu: Intel(R)
                cpu-count: 2
            cpu-frequency: 2933MHz
                 cpu-load: 0%
           free-hdd-space: 66.5MiB
          total-hdd-space: 99.2MiB
  write-sect-since-reboot: 708
         write-sect-total: 708
        architecture-name: x86_64
               board-name: x86
                 platform: MikroTik

Hi

CHR is not ASIC as Cisco or Juniper.. So making x64 will do Your product flexible to hw bugs, as they are common suffering on CHR-s and every other type of RB-s

Then You will have a lot of betatesters whome you are not responsible of - Buy now your are testing with loosing them.

For me - im tied to be a neverending alphatester!

Kind Regards

Aleksander

I am a big mikortik user and run RouterOS almost network wide.

I have no interest in my core routers being virtual machines and have build x86 machines (so I can get a good mix of 10GBE ports and 1GBE ports) to serve as our routers.

It surely cannot be hard to port the CHR to an ISO that we can install on bare metal.

Chupaka !!! Check this!

What I do… I downgraded our test router to 6.31 and enabled x64:
mikrotik-x64-6.31.jpg
Then upgrade to 6.38.1:
mikrotik-x64-6.38.1.jpg
It seems that krzysztof told us the true!!!

Just like I said :slight_smile:

Now you may press ‘Thumb up’ on my post and get back to studying 64-bit version :slight_smile:

We installed on our production router, all 16G RAM at work right now :slight_smile: Plenty of traffic! Do you think it will be stable? :slight_smile: