LINUX.ORG.RU

Перевести процесс в состояние D

 


0

2

Нужно найти простой способ перевода процесса питона в состояние Disk sleep. Предпочтителен простейший способ из пяти строк.

Самый простой вариант потестить был бы поднять NFS сервер, прицепиться к шаре и прибить сервер. Любое обращение к маунтам приведёт к D.

любой процесс пытающияся получить доступ к примаунченой дире тоже попадает в state D.

@beastie Хотелось бы более простой способ. Шары у меня нет. Подойдет ли здесь sshfs вместо cifs шары?

★★★

C sshfs способ сработал, этого достаточно. Примонтировал дир по sshfs, отключил сеть, запустил mkdir - процесс крепко уснул.

hakavlad ★★★
() автор топика
Последнее исправление: hakavlad (всего исправлений: 1)

Попробуй посмотреть в эту сторону

#!/usr/bin/env python
import ctypes
import time

lib = ctypes.CDLL('libc.so.6')
vfork = lib.vfork

vfork()
time.sleep(60)

Правда в итоге получается два процесса. Но тот из которого запущен код переходит в статус D.

comma
()
Ответ на: комментарий от comma

Спасибо!

Итог опыта: OOM killer может таки убивать процессы в состоянии D.

Опыт: процесс сожрал всю почти память и переведен в D.

Далее запускаем tail /dev/zero.

Итог:

Память спящего реальная освободилась, но виртуальная не освободилась и процесс так и ослался в D:

$ cat /proc/26269/status
Name:	python3
Umask:	0022
State:	D (disk sleep)
Tgid:	26269
Ngid:	0
Pid:	26269
PPid:	26263
TracerPid:	0
Uid:	1000	1000	1000	1000
Gid:	1000	1000	1000	1000
FDSize:	256
Groups:	24 25 27 29 30 44 46 108 113 114 118 1000
NStgid:	26269
NSpid:	26269
NSpgid:	26269
NSsid:	26263
VmPeak:	 6242252 kB
VmSize:	 6242252 kB
VmLck:	       0 kB
VmPin:	       0 kB
VmHWM:	 6227144 kB
VmRSS:	       0 kB
RssAnon:	       0 kB
RssFile:	       0 kB
RssShmem:	       0 kB
VmData:	 6222496 kB
VmStk:	     132 kB
VmExe:	    2700 kB
VmLib:	    2928 kB
VmPTE:	   12212 kB
VmPMD:	      36 kB
VmSwap:	       0 kB

statm: 1560563 0 0 675 0 1555657 0

дек 04 22:01:39 PC kernel: Out of memory: Kill process 26269 (python3) score 619 or sacrifice child
дек 04 22:01:39 PC kernel: Killed process 26269 (python3) total-vm:6242252kB, anon-rss:6222176kB, file-rss:0kB, shmem-rss:0kB
дек 04 22:01:39 PC kernel: oom_reaper: reaped process 26269 (python3), now anon-rss:0kB, file-rss:0kB, shmem-rss:0kB
#    PID     PPID  badness  oom_score  oom_score_adj        eUID  S  VmSize  VmRSS  VmSwap  Name
#-------  -------  -------  ---------  -------------  ----------  -  ------  -----  ------  ---------------
#  26263    26258        0          0              0        1000  S      23      4       0  bash
#  26269    26263        0          0              0        1000  D    6096      0       0  python3
#  26292     9060        2          2              0        1000  S     303     20       0  lxterminal

После включения сети процесс был Killed.

hakavlad ★★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.