Значения WCHAN в PS

Что делает WCHAN (ожидающий канал), означают точно? каково может быть его значение и что те значения представляет? Я попытался найти их, но ничего не получил.

5
задан 28 September 2015 в 02:45

2 ответа

От man ps , разделите Standard Format Specifiers:

nwchan     WCHAN     address of the kernel function where the process
                     is sleeping (use wchan if you want the kernel
                     function name).  Running tasks will display a
                     dash ('-') in this column.
wchan      WCHAN     name of the kernel function in which the process
                     is sleeping, a "-" if the process is running, or
                     a "*" if the process is multi-threaded and ps is
                     not displaying threads.

Как видно, они, в настоящее время - функции ядра используясь процессом. Далее:

-n namelist
      Set namelist file.  Identical to N.  The namelist file is needed
      for a proper WCHAN display, and must match the current Linux
      kernel exactly for correct output.  Without this option, the
      default search path for the namelist is:

              $PS_SYSMAP
              $PS_SYSTEM_MAP
              /proc/*/wchan
              /boot/System.map-$(uname -r)
              /boot/System.map
              /lib/modules/$(uname -r)/System.map
              /usr/src/linux/System.map
              /System.map

можно осмотреть /boot/System.map-$(uname -r) на Ubuntu для списка функций:

$ sudo head /boot/System.map-$(uname -r)
0000000000000000 D __per_cpu_start
0000000000000000 D irq_stack_union
0000000000000000 A xen_irq_disable_direct_reloc
0000000000000000 A xen_save_fl_direct_reloc
00000000000001e0 A kexec_control_code_size
0000000000004000 d exception_stacks
0000000000009000 D gdt_page
000000000000a000 D espfix_waddr
000000000000a008 D espfix_stack
000000000000a020 D cpu_info
1
ответ дан 23 November 2019 в 10:42

Обратите внимание, что этот ответ в основном устарел: вам больше никогда не понадобится список имен или System.map. ps в procps-ng читает /proc/${pid}/wchan напрямую, вместо чтения 30-го поля (wchan) из / proc/${pid}/stat и расшифровать его по файлу сопоставления символов.

Фактически, некоторые ядра могут устанавливать для поля wchan /proc/${pid}/stat значение 1 вместо реального значения, чтобы скрыть детали рандомизации структуры адресного пространства ядра.

(Однако у меня возникают странные проблемы с wchan в Fedora 32, см. fedora bug 1879450).

1
ответ дан 16 September 2020 в 10:56

Другие вопросы по тегам:

Похожие вопросы: