Skip to content

Kernel updaten NVMe / SDCard

Verschoben ROCKPro64
  • Wir müssen uns nochmal was mit dem Kernelupdaten bei folgender Installation beschäftigen.

    Installation

    • ROCKPro64
    • SD-Karte
    • PCIe-NVMe-Adapter mit SSD

    Bei dieser Installation nutzen wir die SD-Karte nur zum Booten und binden so früh wie möglich das Rootverzeichnis (/) ein. Dieses Rootverzeichnis liegt auf der SSD.

    0_1540405119543_970_EVO_ergebnis.jpg

    Verzeichnis Struktur

     rock64@rockpro64v2_1_TEST:~$ df -h
     Filesystem      Size  Used Avail Use% Mounted on
     udev            992M     0  992M   0% /dev
     tmpfs           200M  448K  199M   1% /run
     /dev/nvme0n1    229G  8,5G  209G   4% /
     tmpfs           996M     0  996M   0% /dev/shm
     tmpfs           5,0M  4,0K  5,0M   1% /run/lock
     tmpfs           996M     0  996M   0% /sys/fs/cgroup
     /dev/mmcblk0p6  112M  4,0K  112M   1% /boot/efi
     tmpfs           200M     0  200M   0% /run/user/1000
    

    Hier sieht man die Rootpartition /, die auf /dev/nvme0n1 verweist.
    Und die Bootpartition /boot/efi, die auf /dev/mmcblk0p6 liegt.

    SD-Karte

    Device          Start       End   Sectors  Size Type
    /dev/mmcblk0p1     64      8063      8000  3,9M Linux filesystem
    /dev/mmcblk0p2   8064      8191       128   64K Linux filesystem
    /dev/mmcblk0p3   8192     16383      8192    4M Linux filesystem
    /dev/mmcblk0p4  16384     24575      8192    4M Linux filesystem
    /dev/mmcblk0p5  24576     32767      8192    4M Linux filesystem
    /dev/mmcblk0p6  32768    262143    229376  112M Microsoft basic data
    /dev/mmcblk0p7 262144 124735454 124473311 59,4G Linux filesystem
    

    SSD

    rock64@rockpro64v2_1_TEST:~$ ls /
    bin   boot_BAK  etc   lib         media  opt   root  sbin  sys  usr
    boot  dev       home  lost+found  mnt    proc  run   srv   tmp  var
    

    Was passiert jetzt, wenn man den Kernel updatet?

    Ich mache das fast immer so, das ich mir vom Kamil alle Files runterlade und diese dann per

    sudo dpkg -i *.deb
    

    installiere. Dabei werden die neuen Files in /boot reingeschrieben.

    rock64@rockpro64v2_1_TEST:~$ ls /boot
    config-4.4.132-1075-rockchip-ayufan-ga83beded8524
    config-4.4.154-1122-rockchip-ayufan-g7859b9b904a9
    config-4.4.154-1124-rockchip-ayufan-ged3ce4d15ec1
    dtbs
    efi
    extlinux
    filesystem.packages
    filesystem.packages-remove
    initrd.img-4.4.132-1075-rockchip-ayufan-ga83beded8524
    initrd.img-4.4.154-1122-rockchip-ayufan-g7859b9b904a9
    initrd.img-4.4.154-1124-rockchip-ayufan-ged3ce4d15ec1
    System.map-4.4.132-1075-rockchip-ayufan-ga83beded8524
    System.map-4.4.154-1122-rockchip-ayufan-g7859b9b904a9
    System.map-4.4.154-1124-rockchip-ayufan-ged3ce4d15ec1
    vmlinuz-4.4.132-1075-rockchip-ayufan-ga83beded8524
    vmlinuz-4.4.154-1122-rockchip-ayufan-g7859b9b904a9
    vmlinuz-4.4.154-1124-rockchip-ayufan-ged3ce4d15ec1
    

    Wir sehen hier, das es dort drei verschiedene Kernel gibt.

    • 4.4.132-1075
    • 4.4.154-1122
    • 4.4.154-1124

    Jetzt installieren wir mal einen Mainline Kernel.
    Dazu laden wir die drei benötigten Files herunter.

    Dann ein

    sudo dpkg -i *.deb

    Ausgabe

     rock64@rockpro64v2_1_TEST:~$ sudo dpkg -i *.deb
     Vormals nicht ausgewähltes Paket linux-headers-4.19.0-1073-ayufan-ga6e013135a6e wird gewählt.
     (Lese Datenbank ... 101525 Dateien und Verzeichnisse sind derzeit installiert.)
     Vorbereitung zum Entpacken von linux-headers-4.19.0-1073-ayufan-ga6e013135a6e_4.19.0-1073-ayufan_arm64.deb ...
     Entpacken von linux-headers-4.19.0-1073-ayufan-ga6e013135a6e (4.19.0-1073-ayufan) ...
     Vormals nicht ausgewähltes Paket linux-image-4.19.0-1073-ayufan-ga6e013135a6e wird gewählt.
     Vorbereitung zum Entpacken von linux-image-4.19.0-1073-ayufan-ga6e013135a6e_4.19.0-1073-ayufan_arm64.deb ...
     Entpacken von linux-image-4.19.0-1073-ayufan-ga6e013135a6e (4.19.0-1073-ayufan) ...
     Vormals nicht ausgewähltes Paket linux-image-4.19.0-1073-ayufan-ga6e013135a6e-dbg wird gewählt.
     Vorbereitung zum Entpacken von linux-image-4.19.0-1073-ayufan-ga6e013135a6e-dbg_4.19.0-1073-ayufan_arm64.deb ...
     Entpacken von linux-image-4.19.0-1073-ayufan-ga6e013135a6e-dbg (4.19.0-1073-ayufan) ...
     linux-headers-4.19.0-1073-ayufan-ga6e013135a6e (4.19.0-1073-ayufan) wird eingerichtet ...
     linux-image-4.19.0-1073-ayufan-ga6e013135a6e (4.19.0-1073-ayufan) wird eingerichtet ...
     update-initramfs: Generating /boot/initrd.img-4.19.0-1073-ayufan-ga6e013135a6e
     Creating new extlinux.conf...
     Installing new extlinux.conf...
     linux-image-4.19.0-1073-ayufan-ga6e013135a6e-dbg (4.19.0-1073-ayufan) wird eingerichtet ...
    

    Jetzt schauen wir uns das Verzeichnis von eben nochmal an.

    rock64@rockpro64v2_1_TEST:~$ ls /boot
    config-4.19.0-1073-ayufan-ga6e013135a6e
    config-4.4.132-1075-rockchip-ayufan-ga83beded8524
    config-4.4.154-1122-rockchip-ayufan-g7859b9b904a9
    config-4.4.154-1124-rockchip-ayufan-ged3ce4d15ec1
    dtbs
    efi
    extlinux
    filesystem.packages
    filesystem.packages-remove
    initrd.img-4.19.0-1073-ayufan-ga6e013135a6e
    initrd.img-4.4.132-1075-rockchip-ayufan-ga83beded8524
    initrd.img-4.4.154-1122-rockchip-ayufan-g7859b9b904a9
    initrd.img-4.4.154-1124-rockchip-ayufan-ged3ce4d15ec1
    System.map-4.19.0-1073-ayufan-ga6e013135a6e
    System.map-4.4.132-1075-rockchip-ayufan-ga83beded8524
    System.map-4.4.154-1122-rockchip-ayufan-g7859b9b904a9
    System.map-4.4.154-1124-rockchip-ayufan-ged3ce4d15ec1
    vmlinuz-4.19.0-1073-ayufan-ga6e013135a6e
    vmlinuz-4.4.132-1075-rockchip-ayufan-ga83beded8524
    vmlinuz-4.4.154-1122-rockchip-ayufan-g7859b9b904a9
    vmlinuz-4.4.154-1124-rockchip-ayufan-ged3ce4d15ec1
    

    Wir sehen den neuen Kernel 4.19 Aktuell läuft folgender Kernel.

    rock64@rockpro64v2_1_TEST:~$ uname -a
    Linux rockpro64v2_1_TEST 4.4.154-1124-rockchip-ayufan-ged3ce4d15ec1 #1 SMP Mon Oct 22 20:59:41 UTC 2018 aarch64 aarch64 aarch64 GNU/Linux
    

    Wir starten mal neu!

    sudo reboot now
    

    Aufpassen! Aktuell geht der Reboot mit Kernel 4.4. so nicht. Mal bitte die Reset Taste auf dem ROCKPro64 betätigen!

    Wir schauen mal nach dem Kernel.

     rock64@rockpro64v2_1_TEST:~$ uname -a
     Linux rockpro64v2_1_TEST 4.4.154-1124-rockchip-ayufan-ged3ce4d15ec1 #1 SMP Mon Oct 22 20:59:41 UTC 2018 aarch64 aarch64 aarch64 GNU/Linux
    

    Hoppla, was das? Er startet immer noch den Kernel 4.4.154 Warum?

    Bootvorgang

    Beim Booten von der SD-Karte wird von dort der Kernel geladen, erst später schalten wir dann auf die SSD um. Damit ist die Aktualisierung von oben erst mal wirkungslos. Aber das ist recht einfach, wir müssen die Verzeichnisse nur identisch halten.

    SD-Karte mounten

    Nochmal auf die SD-Karte zurück gehen. Die Struktur von oben sieht so aus.

    Device          Start       End   Sectors  Size Type
    /dev/mmcblk0p1     64      8063      8000  3,9M Linux filesystem
    /dev/mmcblk0p2   8064      8191       128   64K Linux filesystem
    /dev/mmcblk0p3   8192     16383      8192    4M Linux filesystem
    /dev/mmcblk0p4  16384     24575      8192    4M Linux filesystem
    /dev/mmcblk0p5  24576     32767      8192    4M Linux filesystem
    /dev/mmcblk0p6  32768    262143    229376  112M Microsoft basic data
    

    Die Partition

    /dev/mmcblk0p6  112M  4,0K  112M   1% /boot/efi
    

    ist schon gemountet. Die interessiert aber nicht. Wir brauchen das Rootverzeichnis der SD-Karte. Das ist die Partition

    /dev/mmcblk0p7
    

    Das Mounten wir jetzt mal eben nach /mnt

     sudo mount /dev/mmcblk0p7 /mnt
    

    Dort interessiert uns das Verzeichnis boot

    rock64@rockpro64v2_1_TEST:~$ ls /mnt/boot
    config-4.4.132-1075-rockchip-ayufan-ga83beded8524
    config-4.4.154-1122-rockchip-ayufan-g7859b9b904a9
    config-4.4.154-1124-rockchip-ayufan-ged3ce4d15ec1
    dtbs
    efi
    extlinux
    filesystem.packages
    filesystem.packages-remove
    initrd.img-4.4.132-1075-rockchip-ayufan-ga83beded8524
    initrd.img-4.4.154-1122-rockchip-ayufan-g7859b9b904a9
    initrd.img-4.4.154-1124-rockchip-ayufan-ged3ce4d15ec1
    System.map-4.4.132-1075-rockchip-ayufan-ga83beded8524
    System.map-4.4.154-1122-rockchip-ayufan-g7859b9b904a9
    System.map-4.4.154-1124-rockchip-ayufan-ged3ce4d15ec1
    vmlinuz-4.4.132-1075-rockchip-ayufan-ga83beded8524
    vmlinuz-4.4.154-1122-rockchip-ayufan-g7859b9b904a9
    vmlinuz-4.4.154-1124-rockchip-ayufan-ged3ce4d15ec1
    

    Wer bis hierhin mitgekommen ist, weiß jetzt wo das Problem liegt 🙂 Auf der SD-Karte muss ebenfalls der Mainline Kernel drauf. Also kopieren wir uns das mal eben rüber.

    Quelle

    rock64@rockpro64v2_1_TEST:~$ ls /boot
    config-4.19.0-1073-ayufan-ga6e013135a6e
    config-4.4.132-1075-rockchip-ayufan-ga83beded8524
    config-4.4.154-1122-rockchip-ayufan-g7859b9b904a9
    config-4.4.154-1124-rockchip-ayufan-ged3ce4d15ec1
    dtbs
    efi
    extlinux
    filesystem.packages
    filesystem.packages-remove
    initrd.img-4.19.0-1073-ayufan-ga6e013135a6e
    initrd.img-4.4.132-1075-rockchip-ayufan-ga83beded8524
    initrd.img-4.4.154-1122-rockchip-ayufan-g7859b9b904a9
    initrd.img-4.4.154-1124-rockchip-ayufan-ged3ce4d15ec1
    System.map-4.19.0-1073-ayufan-ga6e013135a6e
    System.map-4.4.132-1075-rockchip-ayufan-ga83beded8524
    System.map-4.4.154-1122-rockchip-ayufan-g7859b9b904a9
    System.map-4.4.154-1124-rockchip-ayufan-ged3ce4d15ec1
    vmlinuz-4.19.0-1073-ayufan-ga6e013135a6e
    vmlinuz-4.4.132-1075-rockchip-ayufan-ga83beded8524
    vmlinuz-4.4.154-1122-rockchip-ayufan-g7859b9b904a9
    vmlinuz-4.4.154-1124-rockchip-ayufan-ged3ce4d15ec1
    

    Ziel

    rock64@rockpro64v2_1_TEST:~$ ls /mnt/boot
    config-4.4.132-1075-rockchip-ayufan-ga83beded8524
    config-4.4.154-1122-rockchip-ayufan-g7859b9b904a9
    config-4.4.154-1124-rockchip-ayufan-ged3ce4d15ec1
    dtbs
    efi
    extlinux
    filesystem.packages
    filesystem.packages-remove
    initrd.img-4.4.132-1075-rockchip-ayufan-ga83beded8524
    initrd.img-4.4.154-1122-rockchip-ayufan-g7859b9b904a9
    initrd.img-4.4.154-1124-rockchip-ayufan-ged3ce4d15ec1
    System.map-4.4.132-1075-rockchip-ayufan-ga83beded8524
    System.map-4.4.154-1122-rockchip-ayufan-g7859b9b904a9
    System.map-4.4.154-1124-rockchip-ayufan-ged3ce4d15ec1
    vmlinuz-4.4.132-1075-rockchip-ayufan-ga83beded8524
    vmlinuz-4.4.154-1122-rockchip-ayufan-g7859b9b904a9
    vmlinuz-4.4.154-1124-rockchip-ayufan-ged3ce4d15ec1
    

    Kopieren

    sudo cp -r /boot/* /mnt/boot
    

    Kontrolle Ziel

    rock64@rockpro64v2_1_TEST:~$ ls /mnt/boot
    config-4.19.0-1073-ayufan-ga6e013135a6e
    config-4.4.132-1075-rockchip-ayufan-ga83beded8524
    config-4.4.154-1122-rockchip-ayufan-g7859b9b904a9
    config-4.4.154-1124-rockchip-ayufan-ged3ce4d15ec1
    dtbs
    efi
    extlinux
    filesystem.packages
    filesystem.packages-remove
    initrd.img-4.19.0-1073-ayufan-ga6e013135a6e
    initrd.img-4.4.132-1075-rockchip-ayufan-ga83beded8524
    initrd.img-4.4.154-1122-rockchip-ayufan-g7859b9b904a9
    initrd.img-4.4.154-1124-rockchip-ayufan-ged3ce4d15ec1
    System.map-4.19.0-1073-ayufan-ga6e013135a6e
    System.map-4.4.132-1075-rockchip-ayufan-ga83beded8524
    System.map-4.4.154-1122-rockchip-ayufan-g7859b9b904a9
    System.map-4.4.154-1124-rockchip-ayufan-ged3ce4d15ec1
    test
    vmlinuz-4.19.0-1073-ayufan-ga6e013135a6e
    vmlinuz-4.4.132-1075-rockchip-ayufan-ga83beded8524
    vmlinuz-4.4.154-1122-rockchip-ayufan-g7859b9b904a9
    vmlinuz-4.4.154-1124-rockchip-ayufan-ged3ce4d15ec1
    

    Da ist der Kernel 4.19. Noch was Wichtiges, wir müssen die extlinux.conf wieder anpassen.

    sudo nano /mnt/boot/extlinux/extlinux.conf
    

    Ich setze voraus, das das bekannt ist. Ansonsten hier zum Nachlesen!

    Wir entfernen den Mount.

    sudo umount /mnt
    sudo reboot now
    

    Erinnerung! Reboot now ist in Kernel 4.4. aktuell kaputt 😞

    Und nachschauen!

    rock64@rockpro64v2_1_TEST:~$ uname -a
    Linux rockpro64v2_1_TEST 4.19.0-1073-ayufan-ga6e013135a6e #1 SMP PREEMPT Tue Oct 23 09:19:54 UTC 2018 aarch64 aarch64 aarch64 GNU/Linux
    

    Yeah! Kernel 4.19 läuft. Ich hoffe das Prinzip ist verständlich und ihr könnt das gut nachbauen. Wir wollen mal hoffen, das wir in Zukunft einen u-boot sehen, der in der Lage ist direkt von der PCIe-NVMe-Karte zu booten. Das würde einiges vereinfachen, den u-boot in den SPI Flash und fertig! Ob es das mal gibt, weiß ich nicht. Im Moment müssen wir uns so behelfen. Da man den Kernel im Normalfall ja nicht jeden Tag aktualisiert, ist das eine praktikable Lösung!

    Viel Spaß mit einem flotten ROCKPro64!

  • [V] RockPro64 V2.1

    Frank's Resterampe
    1
    0 Stimmen
    1 Beiträge
    107 Aufrufe
    Niemand hat geantwortet
  • WLan auf der Konsole einrichten

    Angeheftet Linux
    3
    0 Stimmen
    3 Beiträge
    590 Aufrufe
    FrankMF

    Ich kann im Manjaro keine WPA3 Sicherheit auswählen, dann bekomme ich keine Verbindung. Es geht nur WPA2 Personal. Gegenstelle ist eine FRITZ!Box 6591 Cable.

    2021-11-28_16-37.png

    In der Fritzbox sieht das so aus

    50d23aa8-5f67-485e-a994-244ef4f6a270-image.png

    Das kam als Fehlermeldung

    Nov 28 11:03:07 frank-pc wpa_supplicant[700]: wlan0: Trying to associate with SSID 'FRITZ!Box 6591 Cable AK' Nov 28 11:03:07 frank-pc wpa_supplicant[700]: wlan0: WPA: Failed to select authenticated key management type Nov 28 11:03:07 frank-pc wpa_supplicant[700]: wlan0: WPA: Failed to set WPA key management and encryption suites

    Ich denke, der Treiber unterstützt das nicht.

  • Zwischenfazit April 2019

    Angeheftet ROCKPro64
    1
    1 Stimmen
    1 Beiträge
    555 Aufrufe
    Niemand hat geantwortet
  • Mainline 4.20.0-rc6

    ROCKPro64
    1
    0 Stimmen
    1 Beiträge
    414 Aufrufe
    Niemand hat geantwortet
  • ROCKPro64 - Docker Image

    ROCKPro64
    4
    0 Stimmen
    4 Beiträge
    1k Aufrufe
    FrankMF

    Das ganze hat einen furchtbar schönen Vorteil. Mal angenommen, ich habe ein NodeBB-Forum in einem Container laufen. Will das Ding updaten und das crasht einfach mal so. Egal, Container stoppen, Container starten und alles läuft wieder.

    Mit dem Commit sichere ich mir dann den Zustand nachdem ich weiß, das alles klappt 🙂

  • NAS Gehäuse für den ROCKPro64

    Verschoben Hardware
    4
    0 Stimmen
    4 Beiträge
    2k Aufrufe
    FrankMF
    POWER-LED

    Die LEDs werden mit 3,3 Volt versorgt. Das ist jetzt recht einfach 😉

    POWER LED + / Pi2-Connector Pin 1 (3,3V) POWER-LED - / Pi2-Connector Pin 9 (GND)

    Pi2-Connector

    0_1537358092990_IMG_20180919_134656_ergebnis.jpg

    0_1537358113178_IMG_20180919_134731_ergebnis.jpg

  • Bionic Minimal 0.7.8

    ROCKPro64
    2
    0 Stimmen
    2 Beiträge
    563 Aufrufe
    FrankMF

    Testin Testing

  • stretch-minimal-rockpro64

    Verschoben Linux
    3
    0 Stimmen
    3 Beiträge
    1k Aufrufe
    FrankMF

    Mal ein Test was der Speicher so kann.

    rock64@rockpro64:~/tinymembench$ ./tinymembench tinymembench v0.4.9 (simple benchmark for memory throughput and latency) ========================================================================== == Memory bandwidth tests == == == == Note 1: 1MB = 1000000 bytes == == Note 2: Results for 'copy' tests show how many bytes can be == == copied per second (adding together read and writen == == bytes would have provided twice higher numbers) == == Note 3: 2-pass copy means that we are using a small temporary buffer == == to first fetch data into it, and only then write it to the == == destination (source -> L1 cache, L1 cache -> destination) == == Note 4: If sample standard deviation exceeds 0.1%, it is shown in == == brackets == ========================================================================== C copy backwards : 2812.7 MB/s C copy backwards (32 byte blocks) : 2811.9 MB/s C copy backwards (64 byte blocks) : 2632.8 MB/s C copy : 2667.2 MB/s C copy prefetched (32 bytes step) : 2633.5 MB/s C copy prefetched (64 bytes step) : 2640.8 MB/s C 2-pass copy : 2509.8 MB/s C 2-pass copy prefetched (32 bytes step) : 2431.6 MB/s C 2-pass copy prefetched (64 bytes step) : 2424.1 MB/s C fill : 4887.7 MB/s (0.5%) C fill (shuffle within 16 byte blocks) : 4883.0 MB/s C fill (shuffle within 32 byte blocks) : 4889.3 MB/s C fill (shuffle within 64 byte blocks) : 4889.2 MB/s --- standard memcpy : 2807.3 MB/s standard memset : 4890.4 MB/s (0.3%) --- NEON LDP/STP copy : 2803.7 MB/s NEON LDP/STP copy pldl2strm (32 bytes step) : 2802.1 MB/s NEON LDP/STP copy pldl2strm (64 bytes step) : 2800.7 MB/s NEON LDP/STP copy pldl1keep (32 bytes step) : 2745.5 MB/s NEON LDP/STP copy pldl1keep (64 bytes step) : 2745.8 MB/s NEON LD1/ST1 copy : 2801.9 MB/s NEON STP fill : 4888.9 MB/s (0.3%) NEON STNP fill : 4850.1 MB/s ARM LDP/STP copy : 2803.8 MB/s ARM STP fill : 4893.0 MB/s (0.5%) ARM STNP fill : 4851.7 MB/s ========================================================================== == Framebuffer read tests. == == == == Many ARM devices use a part of the system memory as the framebuffer, == == typically mapped as uncached but with write-combining enabled. == == Writes to such framebuffers are quite fast, but reads are much == == slower and very sensitive to the alignment and the selection of == == CPU instructions which are used for accessing memory. == == == == Many x86 systems allocate the framebuffer in the GPU memory, == == accessible for the CPU via a relatively slow PCI-E bus. Moreover, == == PCI-E is asymmetric and handles reads a lot worse than writes. == == == == If uncached framebuffer reads are reasonably fast (at least 100 MB/s == == or preferably >300 MB/s), then using the shadow framebuffer layer == == is not necessary in Xorg DDX drivers, resulting in a nice overall == == performance improvement. For example, the xf86-video-fbturbo DDX == == uses this trick. == ========================================================================== NEON LDP/STP copy (from framebuffer) : 602.5 MB/s NEON LDP/STP 2-pass copy (from framebuffer) : 551.6 MB/s NEON LD1/ST1 copy (from framebuffer) : 667.1 MB/s NEON LD1/ST1 2-pass copy (from framebuffer) : 605.6 MB/s ARM LDP/STP copy (from framebuffer) : 445.3 MB/s ARM LDP/STP 2-pass copy (from framebuffer) : 428.8 MB/s ========================================================================== == Memory latency test == == == == Average time is measured for random memory accesses in the buffers == == of different sizes. The larger is the buffer, the more significant == == are relative contributions of TLB, L1/L2 cache misses and SDRAM == == accesses. For extremely large buffer sizes we are expecting to see == == page table walk with several requests to SDRAM for almost every == == memory access (though 64MiB is not nearly large enough to experience == == this effect to its fullest). == == == == Note 1: All the numbers are representing extra time, which needs to == == be added to L1 cache latency. The cycle timings for L1 cache == == latency can be usually found in the processor documentation. == == Note 2: Dual random read means that we are simultaneously performing == == two independent memory accesses at a time. In the case if == == the memory subsystem can't handle multiple outstanding == == requests, dual random read has the same timings as two == == single reads performed one after another. == ========================================================================== block size : single random read / dual random read 1024 : 0.0 ns / 0.0 ns 2048 : 0.0 ns / 0.0 ns 4096 : 0.0 ns / 0.0 ns 8192 : 0.0 ns / 0.0 ns 16384 : 0.0 ns / 0.0 ns 32768 : 0.0 ns / 0.0 ns 65536 : 4.5 ns / 7.2 ns 131072 : 6.8 ns / 9.7 ns 262144 : 9.8 ns / 12.8 ns 524288 : 11.4 ns / 14.7 ns 1048576 : 16.0 ns / 22.6 ns 2097152 : 114.0 ns / 175.3 ns 4194304 : 161.7 ns / 219.9 ns 8388608 : 190.7 ns / 241.5 ns 16777216 : 205.3 ns / 250.5 ns 33554432 : 212.9 ns / 255.5 ns 67108864 : 222.3 ns / 271.1 ns