両方とも前のリビジョン 前のリビジョン 次のリビジョン | 前のリビジョン |
hardware:raspberry_pi:sdcard_overclock [2022/06/01 06:37] – [オーバークロック 100 MHz は時代遅れ😱 安定常用可能なチューニングは 125 MHz の時代へ!!😍] ともやん | hardware:raspberry_pi:sdcard_overclock [2022/10/10 08:27] (現在) – [ベンチ結果まとめ] ともやん |
---|
====== Raspberry Pi で SD カードを 125 MHz にオーバークロック🔥💥する方法🤤 ====== | ====== Raspberry Pi で SD カードを 125 MHz にオーバークロック🔥💥する方法🤤 ====== |
| |
===== オーバークロック 100 MHz は時代遅れ!?😱 安定常用可能なチューニングは 125 MHz の時代へ!!😍 ===== | ===== SD カードの転送速度は Raspberry Pi でも PC の半分ほどまでは引き上げられる🤔 安定常用可能なチューニングは 125 MHz の時代へ!!😍 ===== |
<html> | <html> |
<style> | <style> |
</style> | </style> |
</html> | </html> |
| **KIOXIA EXCERIA 128GB/256GB microSDXC Class10 UHS-I U1 (read 100MB/s)**\\ |
| {{:hardware:sdcard_bench_kioxia_exceria_128gb_microsdxc_class10_uhs-i_u1_001.jpg?100|KIOXIA EXCERIA 128GB microSDXC Class10 UHS-I U1}} |
| {{:hardware:sdcard_bench_kioxia_exceria_256gb_microsdxc_class10_uhs-i_u1_001.jpg?100|KIOXIA EXCERIA 256GB microSDXC Class10 UHS-I U1}}\\ |
<WRAP group 100% mintbl> | <WRAP group 100% mintbl> |
| |
<WRAP left> | <WRAP left> |
^ [[hardware:raspberry_pi:sdcard_overclock:kioxia_exceria_128gb_microsdxc_class10_uhs-i_u1|KIOXIA EXCERIA 128GB microSDXC Class10 UHS-I U1 (read 100MB/s)]] ^^^^^^^^^^ | ^ [[hardware:raspberry_pi:sdcard_overclock:kioxia_exceria_128gb_microsdxc_class10_uhs-i_u1|KIOXIA EXCERIA 128GB microSDXC Class10 UHS-I U1 (read 100MB/s)]] <wrap em> </wrap>\\ [[hardware:raspberry_pi:sdcard_overclock:kioxia_exceria_256gb_microsdxc_class10_uhs-i_u1|KIOXIA EXCERIA 256GB microSDXC Class10 UHS-I U1 (read 100MB/s)]] <wrap em>New!</wrap> ^^^^^^^^^^ |
^ Windows CrystalDiskMark ^^^^^^^^^^ | ^ Windows CrystalDiskMark ^^^^^^^^^^ |
^ SEQ1M Q8T1 ^ Read | 98.311 MB/s ^ Write | 32.031 MB/s ^ SEQ1M Q1T1 ^ Read | 97.013 MB/s ^ Write | 29.957 MB/s | | ^ SEQ1M Q8T1 ^ Read | 98.311 MB/s ^ Write | 32.031 MB/s ^ SEQ1M Q1T1 ^ Read | 97.013 MB/s ^ Write | 29.957 MB/s | |
^ Raspberry Pi Benchmarks (AVG) ^^^^^^^^^^ | ^ Raspberry Pi Benchmarks (AVG) ^^^^^^^^^^ |
^ core_freq ^ turbo ^ sd clock ^^ WRITE(dd) ^^ READ(dd) ^^ HDPARM ^^ | ^ core_freq ^ turbo ^ sd clock ^^ WRITE(dd) ^^ READ(dd) ^^ HDPARM ^^ |
| |
以下の環境でオーバークロックして検証する。\\ | 以下の環境でオーバークロックして検証する。\\ |
OS: DietPi v7.4.2\\ | OS: DietPi v7.4.2, v8.7.1\\ |
Device model: RPi Zero W (armv6l)\\ | Device model: RPi Zero W (armv6l)\\ |
Kernel: Linux DietPi-002 5.10.52+ #1441 Tue Aug 3 18:08:18 BST 2021 armv6l GNU/Linux\\ | Kernel: Linux DietPi-001 5.10.52+ #1441 Tue Aug 3 18:08:18 BST 2021 armv6l GNU/Linux\\ |
| Linux DietPi-001 5.15.32+ #1538 Thu Mar 31 19:37:58 BST 2022 armv6l GNU/Linux\\ |
[[hardware:sd_memory_card|SD メモリーカード]] も参照😉\\ | <wrap em>CrystalDiskMark でのベンチマーク結果は [[hardware:sd_memory_card|SD メモリーカード]] を参照😉</wrap>\\ |
| |
===== 元にした海外の文献を整理 ===== | ===== 元にした海外の文献を整理 ===== |
</style> | </style> |
</html> | </html> |
<WRAP group 100% mintbl> | <WRAP group mintbl> |
| |
<WRAP left> | <WRAP left> |
^ [[hardware:raspberry_pi:sdcard_overclock:kioxia_exceria_128gb_microsdxc_class10_uhs-i_u1|KIOXIA EXCERIA 128GB microSDXC Class10 UHS-I U1 (read 100MB/s)]] ^^^^^^^^^^ | ^ [[hardware:raspberry_pi:sdcard_overclock:kioxia_exceria_256gb_microsdxc_class10_uhs-i_u1|KIOXIA EXCERIA 256GB microSDXC Class10 UHS-I U1 (read 100MB/s)]]\\ [[hardware:raspberry_pi:sdcard_overclock:kioxia_exceria_128gb_microsdxc_class10_uhs-i_u1|KIOXIA EXCERIA 128GB microSDXC Class10 UHS-I U1 (read 100MB/s)]] ^^^^^^^^^^ |
^ Windows CrystalDiskMark ^^^^^^^^^^ | ^ Windows CrystalDiskMark ^^^^^^^^^^ |
^ SEQ1M Q8T1 ^ Read | 98.311 MB/s ^ Write | 32.031 MB/s ^ SEQ1M Q1T1 ^ Read | 97.013 MB/s ^ Write | 29.957 MB/s | | ^ SEQ1M Q8T1 ^ Read | 98.311 MB/s ^ Write | 32.031 MB/s ^ SEQ1M Q1T1 ^ Read | 97.013 MB/s ^ Write | 29.957 MB/s | |
^ Raspberry Pi Benchmarks (AVG) ^^^^^^^^^^ | ^ Raspberry Pi Benchmarks (AVG) ^^^^^^^^^^ |
^ core_freq ^ turbo ^ sd clock ^^ WRITE(dd) ^^ READ(dd) ^^ HDPARM ^^ | ^ core_freq ^ turbo ^ sd clock ^^ WRITE(dd) ^^ READ(dd) ^^ HDPARM ^^ |
^ [[hardware:raspberry_pi:sdcard_overclock:sandisk_128gb_microsdxc_class10_uhs-i_u1_a1|SanDisk 128GB microSDXC Class10 UHS-I U1 A1 (read 120MB/s)]] ^^^^^^^^^^ | ^ [[hardware:raspberry_pi:sdcard_overclock:sandisk_128gb_microsdxc_class10_uhs-i_u1_a1|SanDisk 128GB microSDXC Class10 UHS-I U1 A1 (read 120MB/s)]] ^^^^^^^^^^ |
^ Windows CrystalDiskMark ^^^^^^^^^^ | ^ Windows CrystalDiskMark ^^^^^^^^^^ |
^ SEQ1M Q8T1 ^ Read | 125.470 MB/s ^ Write | 36.448 MB/s ^ SEQ1M Q1T1 ^ Read | 124.919 MB/s ^ Write | 36.075 MB/s | | ^ SEQ1M Q8T1 ^ Read | 125.470 MB/s ^ Write | 36.448 MB/s ^ SEQ1M Q1T1 ^ Read | 124.919 MB/s ^ Write | 36.075 MB/s | |
^ Raspberry Pi Benchmarks (AVG) ^^^^^^^^^^ | ^ Raspberry Pi Benchmarks (AVG) ^^^^^^^^^^ |
^ core_freq ^ turbo ^ sd clock ^^ WRITE(dd) ^^ READ(dd) ^^ HDPARM ^^ | ^ core_freq ^ turbo ^ sd clock ^^ WRITE(dd) ^^ READ(dd) ^^ HDPARM ^^ |
^ [[:hardware:raspberry_pi:sdcard_overclock:toshiba_exceria_32gb_microsdhc_class10_uhs-i_u3|TOSHIBA EXCERIA 32GB MicroSDHC Class10 UHS-I U3]] ^^^^^^^^^^ | ^ [[:hardware:raspberry_pi:sdcard_overclock:toshiba_exceria_32gb_microsdhc_class10_uhs-i_u3|TOSHIBA EXCERIA 32GB MicroSDHC Class10 UHS-I U3]] ^^^^^^^^^^ |
^ Windows CrystalDiskMark ^^^^^^^^^^ | ^ Windows CrystalDiskMark ^^^^^^^^^^ |
^ SEQ1M Q8T1 ^ Read | 97.552 MB/s ^ Write | 57.942 MB/s ^ SEQ1M Q1T1 ^ Read | 95.505 MB/s ^ Write | 59.038 MB/s | | ^ SEQ1M Q8T1 ^ Read | 97.552 MB/s ^ Write | 57.942 MB/s ^ SEQ1M Q1T1 ^ Read | 95.505 MB/s ^ Write | 59.038 MB/s | |
^ Raspberry Pi Benchmarks (AVG) ^^^^^^^^^^ | ^ Raspberry Pi Benchmarks (AVG) ^^^^^^^^^^ |
^ core_freq ^ turbo ^ sd clock ^^ WRITE(dd) ^^ READ(dd) ^^ HDPARM ^^ | ^ core_freq ^ turbo ^ sd clock ^^ WRITE(dd) ^^ READ(dd) ^^ HDPARM ^^ |
^ [[:hardware:raspberry_pi:sdcard_overclock:teamgroup_128gb_microsdxc_class10_uhs-i_u3_v30_a1|TeamGroup 128GB MicroSDXC Class10 UHS-I U3 V30 A1]] ^^^^^^^^^^ | ^ [[:hardware:raspberry_pi:sdcard_overclock:teamgroup_128gb_microsdxc_class10_uhs-i_u3_v30_a1|TeamGroup 128GB MicroSDXC Class10 UHS-I U3 V30 A1]] ^^^^^^^^^^ |
^ Windows CrystalDiskMark ^^^^^^^^^^ | ^ Windows CrystalDiskMark ^^^^^^^^^^ |
^ SEQ1M Q8T1 ^ Read | 98.512 MB/s ^ Write | 55.455 MB/s ^ SEQ1M Q1T1 ^ Read | 96.388 MB/s ^ Write | 52.610 MB/s | | ^ SEQ1M Q8T1 ^ Read | 98.512 MB/s ^ Write | 55.455 MB/s ^ SEQ1M Q1T1 ^ Read | 96.388 MB/s ^ Write | 52.610 MB/s | |
^ Raspberry Pi Benchmarks (AVG) ^^^^^^^^^^ | ^ Raspberry Pi Benchmarks (AVG) ^^^^^^^^^^ |
^ core_freq ^ turbo ^ sd clock ^^ WRITE(dd) ^^ READ(dd) ^^ HDPARM ^^ | ^ core_freq ^ turbo ^ sd clock ^^ WRITE(dd) ^^ READ(dd) ^^ HDPARM ^^ |
<code bash> | <code bash> |
#!/bin/bash | #!/bin/bash |
| |
| APPLICATION_NAME="SD Bench" |
| APPLICATION_VERSION="0.0.1" |
| |
LANG=C | LANG=C |
LC_ALL= | LC_ALL= |
DATAMB=${1:-512} | DATAMB=512 |
FILENM=~/test.dat | FILENM=~/test.dat |
| |
[ -f /flash/config.txt ] && CONFIG=/flash/config.txt || CONFIG=/boot/config.txt | [ -f /flash/config.txt ] && CONFIG=/flash/config.txt || CONFIG=/boot/config.txt |
| |
#grep OpenELEC /etc/os-release >/dev/null && DDTIME=5 || DDTIME=6 | #grep OpenELEC /etc/os-release >/dev/null && DDTIME=5 || DDTIME=6 |
DDTIME=8 | DDTIME=8 |
| |
| str_repeat() { |
| str=$1 |
| count=$2 |
| |
| echo "`printf %${count}s | sed "s/ /${str}/g"`" |
| } |
| |
getperfmbs() | getperfmbs() |
core_max="$(vcgencmd get_config int | grep core_freq | awk -F= '{print $2}')" | core_max="$(vcgencmd get_config int | grep core_freq | awk -F= '{print $2}')" |
turbo="$(vcgencmd get_config int | grep force_turbo | awk -F= '{print $2}')" | turbo="$(vcgencmd get_config int | grep force_turbo | awk -F= '{print $2}')" |
[ -n "${turbo}" ] || turbo=0 | [ -n "${turbo}" ] || turbo=0 |
[ ${turbo} -eq 0 ] && turbo="$(cat /sys/devices/system/cpu/cpufreq/ondemand/io_is_busy)" | [ ${turbo} -eq 0 ] && turbo="$(cat /sys/devices/system/cpu/cpufreq/ondemand/io_is_busy)" |
[ -n "${core_max}" ] || core_max="${core_now}" | [ -n "${core_max}" ] || core_max="${core_now}" |
} | } |
| |
gethwinfo | version() |
echo | { |
echo "CONFIG: $(IFS=","; echo "${conf[*]}")" | printf "$APPLICATION_NAME Ver $APPLICATION_VERSION" |
echo "CLOCK : SD Bus: ${clock_sdbus}, CPU: ${clock_arm}, CPU Temp: ${soc_temp}, SDRAM: ${clock_sdram} MHz" | } |
echo "VOLTS : core: ${volt_core}, sdram(controller, I/O, physical): ${volt_sdram_c}, ${volt_sdram_i}, ${volt_sdram_p}" | |
echo "CORE : ${core_max} MHz(${core_now} MHz), turbo=${turbo}" | |
echo "DATA : ${DATAMB} MB, ${FILENM}" | |
echo | |
| |
echo "HDPARM:" | main() |
echo "======" | { |
HD1="$(getperfmbs "${HDCMD}" 5 8 MB)" | command_name="sdbench" |
HD2="$(getperfmbs "${HDCMD}" 5 8 MB)" | command="$1" |
HD3="$(getperfmbs "${HDCMD}" 5 8 MB)" | |
HDA="$(getavgmbs "${HD1}" "${HD2}" "${HD3}")" | case "$command" in |
| "-h" | "--help" ) |
| echo $(version) |
| printf "%6s %-50s\n" "Usage:" "$command_name [-h|--help]" |
| printf "%6s %-50s\n" "" "$command_name [-i|--info]" |
| printf "%6s %-50s\n" "" "$command_name [data size (MB)]" |
| echo |
| exit 0 |
| ;; |
| "-i" | "--info" ) |
| INFO_ONRY=1 |
| ;; |
| * ) |
| if [[ "$command" =~ ^[0-9]+$ ]]; then |
| INFO_ONRY="" |
| DATAMB=${1:-512} |
| elif [ -n "$command" ]; then |
| echo "Invaled option: '$1'" |
| exit -1 |
| fi |
| ;; |
| esac |
| |
echo | gethwinfo |
echo "WRITE:" | echo |
echo "=====" | printf "$(str_repeat "=" 10) $(version) $(str_repeat "=" 10)\n" |
WR1="$(getperfmbs "${WRCMD}" 1 ${DDTIME} B)" | bak_ifs=$IFS |
WR2="$(getperfmbs "${WRCMD}" 1 ${DDTIME} B)" | echo "CONFIG: $(IFS=", "; echo "${conf[*]}")" |
WR3="$(getperfmbs "${WRCMD}" 1 ${DDTIME} B)" | IFS=$bak_ifs |
WRA="$(getavgmbs "${WR1}" "${WR2}" "${WR3}")" | echo "CLOCK : SD Bus: ${clock_sdbus}, CPU: ${clock_arm}, CPU Temp: ${soc_temp}, SDRAM: ${clock_sdram} MHz" |
| echo "VOLTS : core: ${volt_core}, sdram(controller, I/O, physical): ${volt_sdram_c}, ${volt_sdram_i}, ${volt_sdram_p}" |
| echo "CORE : ${core_max} MHz(${core_now} MHz), turbo=${turbo}" |
| echo "DATA : ${DATAMB} MB, ${FILENM}" |
| echo |
| |
echo | if [ -n "$INFO_ONRY" ]; then |
echo "READ:" | exit 0 |
echo "====" | fi |
RD1="$(getperfmbs "${RDCMD}" 1 ${DDTIME} B)" | |
RD2="$(getperfmbs "${RDCMD}" 1 ${DDTIME} B)" | |
RD3="$(getperfmbs "${RDCMD}" 1 ${DDTIME} B)" | |
RDA="$(getavgmbs "${RD1}" "${RD2}" "${RD3}")" | |
| |
gethwinfo | echo "HDPARM:" |
echo | echo $(str_repeat "=" 6) |
echo "RESULT (AVG):" | HD1="$(getperfmbs "${HDCMD}" 5 8 MB)" |
echo "============" | HD2="$(getperfmbs "${HDCMD}" 5 8 MB)" |
printf "%9s %7s %12s %11s %11s %13s\n" "core_freq" "turbo" "sd clock" "WRITE" "READ" "HDPARM" | HD3="$(getperfmbs "${HDCMD}" 5 8 MB)" |
printf " %d %d %11s %10s %10s %10s\n" "${core_max}" "${turbo}" "${clock_sdbus}" "${WRA}" "${RDA}" "${HDA}" | HDA="$(getavgmbs "${HD1}" "${HD2}" "${HD3}")" |
| |
| echo |
| echo "WRITE:" |
| echo $(str_repeat "=" 5) |
| WR1="$(getperfmbs "${WRCMD}" 1 ${DDTIME} B)" |
| WR2="$(getperfmbs "${WRCMD}" 1 ${DDTIME} B)" |
| WR3="$(getperfmbs "${WRCMD}" 1 ${DDTIME} B)" |
| WRA="$(getavgmbs "${WR1}" "${WR2}" "${WR3}")" |
| |
| echo |
| echo "READ:" |
| echo $(str_repeat "=" 4) |
| RD1="$(getperfmbs "${RDCMD}" 1 ${DDTIME} B)" |
| RD2="$(getperfmbs "${RDCMD}" 1 ${DDTIME} B)" |
| RD3="$(getperfmbs "${RDCMD}" 1 ${DDTIME} B)" |
| RDA="$(getavgmbs "${RD1}" "${RD2}" "${RD3}")" |
| |
| gethwinfo |
| echo |
| echo "RESULT (AVG):" |
| echo $(str_repeat "=" 12) |
| printf "%9s %7s %12s %11s %11s %13s\n" "core_freq" "turbo" "sd clock" "WRITE" "READ" "HDPARM" |
| printf " %d %d %11s %10s %10s %10s\n" "${core_max}" "${turbo}" "${clock_sdbus}" "${WRA}" "${RDA}" "${HDA}" |
| |
| echo |
| echo "microSD card benchmark complete!" |
| echo "CPU Temp: ${soc_temp}" |
| echo |
| } |
| |
echo | main "$*" |
echo "microSD card benchmark complete!" | |
echo "CPU Temp: ${soc_temp}" | |
echo | |
</code></WRAP> | </code></WRAP> |
| |
[[tw>tomoyan596/status/1441445004413571077|あれ❓TermさんのCrystalDiskMarkのデータが無い😭 / Twitter]]\\ | [[tw>tomoyan596/status/1441445004413571077|あれ❓TermさんのCrystalDiskMarkのデータが無い😭 / Twitter]]\\ |
[[tw>tomoyan596/status/1495573389905645569|“Linuxなら、わずか2200円税込でも快適なマシンがさらに数で勝負出来ちゃう🥰SDカードオーバークロックしますけど😅 / Twitter]]\\ | [[tw>tomoyan596/status/1495573389905645569|“Linuxなら、わずか2200円税込でも快適なマシンがさらに数で勝負出来ちゃう🥰SDカードオーバークロックしますけど😅 / Twitter]]\\ |
| [[tw>tomoyan596sp/status/1509759405746577412|KIOXIA EXCERIA 128GB microSDXC Class10 UHS-I U1core_freq=565,dtparam=sd_overclock=125SDオーバークロックは125MHz時代へ🥰dmesgで確認するとKernelがエラー吐いている時は強制的に125MHzから調整に入るのでsd_overclock=125以上を指定出来ない模様🤔Kernelの限界❓🤔]]\\ |
| [[tw>tomoyan596sp/status/1519948839452819456|そろそろ、Raspberry Pi Zero のSD bus オーバークロック 125MHz乗用1ヶ月🤔何も問題ないのて安定乗用可能マークしておきます😊通常SD busクロックは50MHz🤔PCの1/4倍速です😅125MHzなら倍以上速いです🤤]]\\ |
| |