Tecnologia e non solo

settembre 23, 2017

Ryzen 1700

Filed under: Debian,hardware — telperion @ 4:45 PM

Con Debian 9 il mio Ryzen R7 1700 aveva qualche piccolo problemino.
Sporadicamente, mentre il pc era in idle, si freezava obbligando al reset, e sporadicamente avevo segfault durante le compilazioni con make -j16
Niente di catastrofico, capitava circa 1 volta a settimana e non andava perso nessun lavoro, ovviamente nel caso di segfault bisognava ricompilare.
Dopo ricerche, con visioni catastofistiche tipo “i Ryzen costruiti prima della settimana xx del 2017 sono fallati e da rendere in rma”, ho trovato alcune indicazioni utili:

Since I added CONFIG_RCU_NOCB_CPU and CONFIG_RCU_NOCB_CPU_ALL and Norandmaps in my kernel of vanilla 4.11.x, I have never seen a freeze …
Thanks for the tip !

effettivamente aggiungendo
CONFIG_RCU_NOCB_CPU=y CONFIG_RCU_NOCB_CPU_ALL=y norandmaps
ai parametri di boot del kernel i problemi sparivano.

Kernel command line: BOOT_IMAGE=/boot/vmlinuz-4.9.0-3-amd64 root=UUID=11771692-d7fa-4854-ad67-badefa904511 ro vga=0x305 ipv6.disable=1 CONFIG_RCU_NOCB_CPU=y CONFIG_RCU_NOCB_CPU_ALL=y norandmaps

Compilati poi vari kernel,
con
CONFIG_RCU_NOCB_CPU=y
CONFIG_RCU_NOCB_CPU_ALL=y

ora ho il 4.12.14
[ 0.000000] Linux version 4.12.14-mc (root@dhcppc1) (gcc version 6.3.0 20170516 (Debian 6.3.0-18) ) #1 SMP Thu Sep 21 15:24:35 CEST 2017
[ 0.000000] Command line: BOOT_IMAGE=/boot/vmlinuz-4.12.14-mc root=UUID=11771692-d7fa-4854-ad67-badefa904511 ro vga=0x305 ipv6.disable=1 norandmaps quiet

verifica:
mc@dhcppc1:~$ sudo dmesg | grep RCU
[ 0.000000] Hierarchical RCU implementation.
[ 0.000000] RCU restricting CPUs from NR_CPUS=512 to nr_cpu_ids=16.
[ 0.000000] RCU: Adjusting geometry for rcu_fanout_leaf=16, nr_cpu_ids=16
[ 0.000000] Offload RCU callbacks from all CPUs
[ 0.000000] Offload RCU callbacks from CPUs: 0-15.

tutto funziona da mesi senza intoppi.

Per chi ne avesse bisogno:
non è necessario ricompilare il kernel se non ne siete capaci, basta aggiungere
CONFIG_RCU_NOCB_CPU=y CONFIG_RCU_NOCB_CPU_ALL=y norandmaps
ai parametri di boot del kernel

CONFIG_RCU_NOCB_CPU_ALL=y probabilmente non ha effetto ma il resto si:

[ 0.000000] Linux version 4.9.0-3-amd64 (debian-kernel@lists.debian.org) (gcc version 6.3.0 20170516 (Debian 6.3.0-18) ) #1 SMP Debian 4.9.30-2+deb9u3 (2017-08-06)
[ 0.000000] Command line: BOOT_IMAGE=/boot/vmlinuz-4.9.0-3-amd64 root=UUID=11771692-d7fa-4854-ad67-badefa904511 ro vga=0x305 ipv6.disable=1 CONFIG_RCU_NOCB_CPU=y CONFIG_RCU_NOCB_CPU_ALL=y norandmaps

sudo dmesg | grep RCU
[ 0.000000] Hierarchical RCU implementation.
[ 0.000000] Build-time adjustment of leaf fanout to 64.
[ 0.000000] RCU restricting CPUs from NR_CPUS=512 to nr_cpu_ids=16.
[ 0.000000] RCU: Adjusting geometry for rcu_fanout_leaf=64, nr_cpu_ids=16

manca solo
[ 0.000000] Offload RCU callbacks from all CPUs
[ 0.000000] Offload RCU callbacks from CPUs: 0-15.

rispetto al kernel compilato, ma fa comunque il suo lavoro.

Aggiornamento:
dopo 3 settimane di test norandmaps non è necessario.
Rimosso e tutto funziona.