La sección Wchan en la salida de ps no muestra nada

La sección Wchan en la salida de ps no muestra nada

Sé que si un proceso entra en Destado, significa que está en estado ininterrumpible. El proceso no puede ser interrumpido por ninguna señal. Sólo saldrá de ese estado al reiniciar o si finaliza la espera de E/S.

Tengo muchos procesos en Destado que muestran que algo anda mal en mi máquina. Además, incluso después de reiniciar, vuelven al Destado. Busqué en línea y encontré que la wchansección en la salida de ps indica qué cosa en el kernel está esperando mi proceso.

Cuando uso este comando, ps axl| grep Daparece -la columna wchan y no hay ninguna explicación en línea de lo que esto significa.

Este es mi resultado de muestra para el comando anterior.

0     0  69970      1  20   0  25064  1088 -      D    ?          0:00 ls -l

No puedo entender lo que -significa el resultado anterior.

Respuesta1

Hay varias razones posibles por las que se informa -que ps:

  • el proceso simplemente no está bloqueado en el kernel, es decir, se está ejecutando (ver la statecolumna ps)
  • elprocedimiento de caminata de pilafalla debido a algún caso de esquina o condición de carrera. Incluso puede fallar incondicionalmente, por ejemplo, en núcleos que requieren configuraciones adecuadas de puntero de fotograma pero que se compilaron sin ellas; compruébelo con cat /proc/*/wchan: todos los resultados 0 indican que el soporte de wchan no funciona (por ejemplo, actualmente es el caso enFedora 31 y 32)
  • no tengolo necesariopermisos del modo de acceso ptrace(es decir PTRACE_MODE_READ_FSCREDS) - improbable
  • ella búsqueda de símbolos fallaen el núcleo - poco probable

Tenga en cuenta que la versión reciente pslee la información wchan a la que también /proc/$pid/wchanpuede acceder directamente para realizar pruebas más fácilmente. catEse archivo lee 0si falló la recuperación de información, lo que psse traduce en -.

En sistemas donde wchanno funciona un sustituto es mirar (requiere root):

cat /proc/$pid/stack

O alternativamente consultar (no requiere privilegios de root):

cat /proc/$pid/syscall

Respuesta2

en el kernel de Linux más nuevo ves en qué función del kernel está bloqueado tu proceso

cat /proc/<pid_numer>/stack

Respuesta3

La página de manual para ps tiene esta información, "-" significa que el proceso se está ejecutando. Nombre WCHAN de la función del kernel en la que el proceso está inactivo, un "-" si el proceso se está ejecutando o un "*" si el proceso tiene múltiples subprocesos y ps no muestra subprocesos.

información relacionada