Разгон microSD слота в Raspberry Pi


  • 0

    Существует возможность разгона microSD порта у Raspberry Pi что может дать существенный прирост скорости повседневных операций чтения и записи от 25% до 50%. Конечно же исправить плохую карту памяти этот метод никак не поможет, учитывая что в большинстве случаев скорость карты памяти существенно ниже максимальной скорости шини RPi. А так же, для успешного осуществления у Вас обязательно должен быть блок питания с выходными характеристиками 5V 2А, с плохим блоком питания есть высокий шанс потерять все данные на карте памяти.

    Качественный блок питания (5V 2A) обязателен для успешного разгона microSD слота.
    Не рекомендуется использовать не UHS карту памяти.
    Даже в самом идеальном случае - сделайте бекап. Вы предупреждены.

    Разгон

    Добавьте директиву dtoverlay с параметром 100MHz (стандартно 50MHz) в свой /boot/config.txt

    dtoverlay=sdhost,overclock_50=100
    

    Перезагрузите плату sudo reboot и можете проводить тесты.

    Тестирование

    Тестирование hdparm, dd, iozone.

    $ curl https://raw.githubusercontent.com/geerlingguy/raspberry-pi-dramble/master/setup/benchmarks/microsd-benchmarks.sh | sudo bash
    

    Тестирование hdparm и чтение/запись больших файлов.

    $ curl http://www.nmacleod.com/public/sdbench.sh | sudo bash
    

    Я протестировал на обыкновенной SanDisk Ultra (UHS-1) 8GB и вот такие результаты у меня получились.

    До разгона

    $ curl https://raw.githubusercontent.com/geerlingguy/raspberry-pi-dramble/master/setup/benchmarks/microsd-benchmarks.sh | sudo bash
                                                                  random    random     bkwd    record    stride                                    
                  kB  reclen    write  rewrite    read    reread    read     write     read   rewrite      read   fwrite frewrite    fread  freread
              102400       4     1663     1678     5476     5462     5457      870                                                                
    
    $ curl http://www.nmacleod.com/public/sdbench.sh | sudo bash
    CONFIG: 
    CLOCK : 50.000 MHz
    CORE  : 400 MHz, turbo=0
    DATA  : 512 MB, /root/test.dat
    
    HDPARM:
    ======
     Timing O_DIRECT disk reads:  66 MB in  3.01 seconds =  21.91 MB/sec
     Timing O_DIRECT disk reads:  66 MB in  3.01 seconds =  21.93 MB/sec
     Timing O_DIRECT disk reads:  66 MB in  3.02 seconds =  21.87 MB/sec
    
    WRITE:
    =====
    536870912 bytes (537 MB) copied, 25.7151 s, 20.9 MB/s
    536870912 bytes (537 MB) copied, 25.5975 s, 21.0 MB/s
    536870912 bytes (537 MB) copied, 25.645 s, 20.9 MB/s
    
    READ:
    ====
    536870912 bytes (537 MB) copied, 24.4688 s, 21.9 MB/s
    536870912 bytes (537 MB) copied, 24.5011 s, 21.9 MB/s
    536870912 bytes (537 MB) copied, 24.461 s, 21.9 MB/s
    
    RESULT (AVG):
    ============
    Overlay config                      core_freq   turbo   overclock_50    WRITE        READ        HDPARM
                                           400        0      50.000 MHz   19.96 MB/s   20.92 MB/s   21.90 MB/s
    
    

    После разгона

    $ curl https://raw.githubusercontent.com/geerlingguy/raspberry-pi-dramble/master/setup/benchmarks/microsd-benchmarks.sh | sudo bash
    
                                                        random    random     bkwd    record    stride                                    
        kB  reclen    write  rewrite    read    reread    read     write     read   rewrite      read   fwrite frewrite    fread  freread
    102400       4     1760     1741     6000     6008     5974      890                                                                
    
    $ curl http://www.nmacleod.com/public/sdbench.sh | sudo bash
    CONFIG: dtoverlay=sdhost,overclock_50=100
    CLOCK : 100.000 MHz
    CORE  : 400 MHz, turbo=0
    DATA  : 512 MB, /root/test.dat
    
    HDPARM:
    ======
     Timing O_DIRECT disk reads: 106 MB in  3.01 seconds =  35.27 MB/sec
     Timing O_DIRECT disk reads: 106 MB in  3.01 seconds =  35.16 MB/sec
     Timing O_DIRECT disk reads: 106 MB in  3.02 seconds =  35.14 MB/sec
    
    WRITE:
    =====
    536870912 bytes (537 MB) copied, 22.5354 s, 23.8 MB/s
    536870912 bytes (537 MB) copied, 23.0092 s, 23.3 MB/s
    536870912 bytes (537 MB) copied, 22.3843 s, 24.0 MB/s
    
    READ:
    ====
    536870912 bytes (537 MB) copied, 15.3637 s, 34.9 MB/s
    536870912 bytes (537 MB) copied, 15.4424 s, 34.8 MB/s
    536870912 bytes (537 MB) copied, 15.5618 s, 34.5 MB/s
    
    RESULT (AVG):
    ============
    Overlay config                      core_freq   turbo   overclock_50    WRITE        READ        HDPARM
    dtoverlay=sdhost,overclock_50=100      400        0     100.000 MHz   22.61 MB/s   33.13 MB/s   35.18 MB/s
    

    Проблемы и их решение

    • Если Ваш блок питания выдает напряжение менее 2А - Raspberry Pi может совсем не запустится или принудительно сбросить частоту MicroSD слота.
    • Если Вы заметите в dmesg сообщения “reducing overclock” связанные с mmc0 - это скорее всего означает что Ваша карта памяти не может работать на более высоких частотах.

    В некоторых случаях помогала простая перезагрузка по питанию, если Вам это не помогло - попробуйте использовать другой БП и карту памяти. Так же, можно не задирать частоту на максимум, а поробовать одно из более низких значений.
    Raspberry Pi 2: 63, 72, 84
    Raspberry Pi 3: 50, 80, 100

    Если у Вас есть проблемы с нормальным функционированием WiFi после разгона microSD порта или в Вашей ОС нет sdhost оверлея в /boot/overlays/ - вы можете скачать его sudo wget -O /boot/overlays/sdtweak-overlay.dtb http://piboard.io/uploads/files/1473172093809-sdtweak-overlay.dtb. В любом случае - не помешает его обновить. В случае обвновления файла в /boot/config.txt нужно использовать sdtweak директиву, а не sdhost.



  • 1

    Спасибо! Стало заметно быстрее работать. На Sandisk extreme 16GB - 40МБ чтения и почти 30МБ записи, рандом рид/райт 9966/2337



  • 2

    Всем привет. Ребята какую покупать флешку для ОС 16 или 32 гиг?



  • 3

    @viktor6 Привет! Если вопрос в обьеме - от 8 и выше, десятый класс.





Похоже, подключение к PiBoard было разорвано, подождите, пока мы пытаемся восстановить соединение.