Una cosa rara que he descubierto
-----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1 Hola: (esta es para Rafa ;-) ) Llevo como un año mosqueado por un problema al intentar hibernar mi ordenador. Normalmente funciona perfecto, pero a veces se queda pillado y no progresa (y puedo arrancar programas tal cual). En esas ocasiones intento apagar el ordenador, y también se queda pillado. Incluso hago ctrl-alt-supr como 10 veces rápidamente: el kernel lo detecta y dice que ha detectado esas teclas siete veces en rápida sucesión, que entiende que es una emergencia y que actúa, pero no, no actúa. Tengo que dar el gran botonazo, y al día siguiente un gran fsck. Hace poco puse "atop" en un terminal, y ví (cuando se trababa la hibernación) que decía que el disco sdc estaba al 100% ocupado. Iotop también pone algo interesante: iotop: Total DISK READ : 0.00 B/s | Total DISK WRITE : 368.01 K/s Actual DISK READ: 0.00 B/s | Actual DISK WRITE: 269.56 K/s TID PRIO USER DISK READ DISK WRITE SWAPIN IO> COMMAND 25530 be/4 root 0.00 B/s 332.85 K/s 0.00 % 97.58 % [kworker/u64:1+flush-8:32] <== 25104 be/4 root 0.00 B/s 4.69 K/s 0.00 % 1.41 % [kworker/8:1-events] 1408 be/3 root 0.00 B/s 11.72 K/s 0.00 % 1.25 % [jbd2/sdc10-8] 25944 be/4 root 0.00 B/s 0.00 B/s 0.00 % 0.04 % [kworker/0:2-events] 25637 be/4 root 0.00 B/s 0.00 B/s 0.00 % 0.04 % [kworker/0:0-events] 11191 be/4 cer 0.00 B/s 18.75 K/s 0.00 % 0.00 % firefox -P Small [localStorage DB] atop: PRC | sys 0.84s | user 1.73s | #proc 625 | #zombie 1 | no procacct | CPU | sys 10% | user 29% | irq 1% | idle 1065% | wait 96% | CPL | avg1 0.86 | avg5 0.45 | avg15 0.41 | csw 102167 | intr 58821 | MEM | tot 31.3G | free 13.2G | cache 2.8G | buff 1.4G | slab 1.2G | SWP | tot 100.0G | free 94.8G | | vmcom 29.4G | vmlim 115.7G | LVM | cr_cripta | busy 1% | read 0 | write 2 | avio 34.0 ms | DSK | sdc | busy 99% | read 0 | write 399 | avio 24.9 ms | <== NET | transport | tcpi 11 | tcpo 17 | udpi 0 | udpo 0 | NET | network | ipi 12 | ipo 17 | ipfrw 0 | deliv 12 | NET | eth0 0% | pcki 13 | pcko 18 | si 1 Kbps | so 1 Kbps | PID SYSCPU USRCPU VGROW RGROW RUID EUID ST EXC THR S CPUNR CPU CMD 1/6 10990 0.06s 0.22s 0K 172K cer cer -- - 64 S 7 3% Web Content 10799 0.08s 0.19s 0K 0K cer cer -- - 81 S 5 3% firefox 11012 0.02s 0.23s 0K -84K cer cer -- - 60 S 8 2% Web Content 9585 0.03s 0.20s 0K 0K root root -- - 1 S 0 2% iotop 11096 0.04s 0.18s 1024K 1784K cer cer -- - 58 S 2 2% Web Content 4288 0.19s 0.00s 14356K 0K root root -- - 21 S 3 2% X Lo siguiente era ver que partición de sdc era la ocupada; eso lo descubrí con gkrellm. Está escribiendo como 400K/S mantenidos, en la partición nueve. /dev/sdc9 es reiserfs, y tiene varios montajes "bind": /dev/sdc9 on /data/Lareiserfs type reiserfs (rw,relatime,lazytime,user_xattr,acl) montajes bind: /dev/sdc9 on /data/homedvl type reiserfs (rw,relatime,lazytime,user_xattr,acl) /dev/sdc9 on /usr/share/flightgear type reiserfs (rw,relatime,lazytime,user_xattr,acl) /dev/sdc9 on /var/spool/news type reiserfs (rw,relatime,lazytime,user_xattr,acl) /dev/sdc9 on /home/cer/terrasync type reiserfs (rw,relatime,lazytime,user_xattr,acl) /dev/sdc9 on /usr/src type reiserfs (rw,relatime,lazytime,user_xattr,acl) El directorio que está activo es "/var/spool/news". Uso leafnode nntp proxy server. Contiene 1.2 millón de ficheros en mas o menos 3 GB de espacio usado. El siguiente descubrimiento es que si hago: time sync time sync && systemctl hibernate el sync puede tardar lo suyo, pero la hibernación es casi instantánea y no da problemas. A partir de ahí descubrí que no es que la hibernación se quede trabada, es que el kernel intenta sincronizar los sistemas de ficheros, y no puede porque uno de ellos está constantemente escribiendo, y no consigue sincronizar hasta que el proceso termine, lo que puede tardar veinte minutos. El proceso en cuestión es "texpire", que es disparado por el cron. Es un proceso que básicamente recorre todos los mensajes de las news uno a uno (que son 1.2E6 ficheros) para ver cual es muy antiguo y borrarlo. Hay otra cosa muy rara, que es que cuando ejecuto "sync" fuera de esa franja de tiempo, tarda como un minuto en sincronizar. Un minuto de actividad de escritura en esa partición. Mi sospecha es que se trata de escribir las marcas de tiempo de los ficheros de mensajes leídos, que se hacen con retraso debido a "relatime,lazytime" (que son los parámetros por defecto). Los viejos del lugar igual recuerdan que los servidores de noticias son uno de los pocos programas que usan las marcas de tiempo que registran la apertura de ficheros para leer. ¿Qué os parece? - -- Cheers / Saludos, Carlos E. R. (from 15.2 x86_64 at Telcontar) -----BEGIN PGP SIGNATURE----- iHoEARECADoWIQQZEb51mJKK1KpcU/W1MxgcbY1H1QUCYGNZxRwccm9iaW4ubGlz dGFzQHRlbGVmb25pY2EubmV0AAoJELUzGBxtjUfV2gUAnRrFhdu2V4/hckHopeAR Pf5xVe+PAJ9Vtv/zFRCNrn+oC7/VEiobA5PvaA== =4e5p -----END PGP SIGNATURE-----
El mar, 30 mar 2021 a las 14:11, Carlos E. R. (
-----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1
Hola:
(esta es para Rafa ;-) )
Llevo como un año mosqueado por un problema al intentar hibernar mi ordenador. Normalmente funciona perfecto, pero a veces se queda pillado y no progresa (y puedo arrancar programas tal cual). En esas ocasiones intento apagar el ordenador, y también se queda pillado. Incluso hago ctrl-alt-supr como 10 veces rápidamente: el kernel lo detecta y dice que ha detectado esas teclas siete veces en rápida sucesión, que entiende que es una emergencia y que actúa, pero no, no actúa. Tengo que dar el gran botonazo, y al día siguiente un gran fsck.
Hace poco puse "atop" en un terminal, y ví (cuando se trababa la hibernación) que decía que el disco sdc estaba al 100% ocupado. Iotop también pone algo interesante:
iotop:
Total DISK READ : 0.00 B/s | Total DISK WRITE : 368.01 K/s Actual DISK READ: 0.00 B/s | Actual DISK WRITE: 269.56 K/s TID PRIO USER DISK READ DISK WRITE SWAPIN IO> COMMAND 25530 be/4 root 0.00 B/s 332.85 K/s 0.00 % 97.58 % [kworker/u64:1+flush-8:32] <== 25104 be/4 root 0.00 B/s 4.69 K/s 0.00 % 1.41 % [kworker/8:1-events] 1408 be/3 root 0.00 B/s 11.72 K/s 0.00 % 1.25 % [jbd2/sdc10-8] 25944 be/4 root 0.00 B/s 0.00 B/s 0.00 % 0.04 % [kworker/0:2-events] 25637 be/4 root 0.00 B/s 0.00 B/s 0.00 % 0.04 % [kworker/0:0-events] 11191 be/4 cer 0.00 B/s 18.75 K/s 0.00 % 0.00 % firefox -P Small [localStorage DB]
atop:
PRC | sys 0.84s | user 1.73s | #proc 625 | #zombie 1 | no procacct | CPU | sys 10% | user 29% | irq 1% | idle 1065% | wait 96% | CPL | avg1 0.86 | avg5 0.45 | avg15 0.41 | csw 102167 | intr 58821 | MEM | tot 31.3G | free 13.2G | cache 2.8G | buff 1.4G | slab 1.2G | SWP | tot 100.0G | free 94.8G | | vmcom 29.4G | vmlim 115.7G | LVM | cr_cripta | busy 1% | read 0 | write 2 | avio 34.0 ms | DSK | sdc | busy 99% | read 0 | write 399 | avio 24.9 ms | <== NET | transport | tcpi 11 | tcpo 17 | udpi 0 | udpo 0 | NET | network | ipi 12 | ipo 17 | ipfrw 0 | deliv 12 | NET | eth0 0% | pcki 13 | pcko 18 | si 1 Kbps | so 1 Kbps |
PID SYSCPU USRCPU VGROW RGROW RUID EUID ST EXC THR S CPUNR CPU CMD 1/6 10990 0.06s 0.22s 0K 172K cer cer -- - 64 S 7 3% Web Content 10799 0.08s 0.19s 0K 0K cer cer -- - 81 S 5 3% firefox 11012 0.02s 0.23s 0K -84K cer cer -- - 60 S 8 2% Web Content 9585 0.03s 0.20s 0K 0K root root -- - 1 S 0 2% iotop 11096 0.04s 0.18s 1024K 1784K cer cer -- - 58 S 2 2% Web Content 4288 0.19s 0.00s 14356K 0K root root -- - 21 S 3 2% X
Lo siguiente era ver que partición de sdc era la ocupada; eso lo descubrí con gkrellm. Está escribiendo como 400K/S mantenidos, en la partición nueve.
/dev/sdc9 es reiserfs, y tiene varios montajes "bind":
/dev/sdc9 on /data/Lareiserfs type reiserfs (rw,relatime,lazytime,user_xattr,acl)
montajes bind:
/dev/sdc9 on /data/homedvl type reiserfs (rw,relatime,lazytime,user_xattr,acl) /dev/sdc9 on /usr/share/flightgear type reiserfs (rw,relatime,lazytime,user_xattr,acl) /dev/sdc9 on /var/spool/news type reiserfs (rw,relatime,lazytime,user_xattr,acl) /dev/sdc9 on /home/cer/terrasync type reiserfs (rw,relatime,lazytime,user_xattr,acl) /dev/sdc9 on /usr/src type reiserfs (rw,relatime,lazytime,user_xattr,acl)
El directorio que está activo es "/var/spool/news". Uso leafnode nntp proxy server. Contiene 1.2 millón de ficheros en mas o menos 3 GB de espacio usado.
El siguiente descubrimiento es que si hago:
time sync time sync && systemctl hibernate
el sync puede tardar lo suyo, pero la hibernación es casi instantánea y no da problemas.
A partir de ahí descubrí que no es que la hibernación se quede trabada, es que el kernel intenta sincronizar los sistemas de ficheros, y no puede porque uno de ellos está constantemente escribiendo, y no consigue sincronizar hasta que el proceso termine, lo que puede tardar veinte minutos.
El proceso en cuestión es "texpire", que es disparado por el cron. Es un proceso que básicamente recorre todos los mensajes de las news uno a uno (que son 1.2E6 ficheros) para ver cual es muy antiguo y borrarlo.
Hay otra cosa muy rara, que es que cuando ejecuto "sync" fuera de esa franja de tiempo, tarda como un minuto en sincronizar. Un minuto de actividad de escritura en esa partición. Mi sospecha es que se trata de escribir las marcas de tiempo de los ficheros de mensajes leídos, que se hacen con retraso debido a "relatime,lazytime" (que son los parámetros por defecto).
Los viejos del lugar igual recuerdan que los servidores de noticias son uno de los pocos programas que usan las marcas de tiempo que registran la apertura de ficheros para leer.
¿Qué os parece?
La verdad es que yo no acostumbro a usar la hibernación, pero tengo una demora para el apagado, debido a un proceso de usuario 1.000 desde hace un par de meses con Tumbleweed. Para colmo, no puedo monitorizar que es lo que realmente pasa o cual es exactamente el proceso "que no quiere morir", porque el sistema está en proceso de apagado. Saludos, Juan -- USA LINUX OPENSUSE QUE ES SOFTWARE LIBRE, NO NECESITAS PIRATEAR NADA Y NI TE VAS A PREOCUPAR MAS POR LOS VIRUS Y SPYWARES: http://www.opensuse.org/es/ Puedes visitar mi blog en: http://jerbes.blogspot.com.ar/
participants (2)
-
Carlos E. R.
-
Juan Erbes