프로세스가 언제 'D'상태가됩니까?


21

"Linux 호스트 이름 2.6.28-15-generic # 49-Ubuntu SMP Tue Aug 18 18:40:08 UTC 2009 i686 GNU / Linux"를 사용하고 있습니다.

모든 클라이언트 컴퓨터는 씬 클라이언트를 사용하고, 랩톱을 사용하여 작업하고 홈 디렉토리를 서버에서 랩톱으로 마운트합니다.

노트북에서 파이어 폭스를 열면 프로세스가 'D'상태이고 다른 모든 사용자 컴퓨터가 중단되고 잠긴 프로세스가 'D'상태이기 때문에 파이어 폭스 창이 열리지 않습니다.

ps ajx | grep 파이어 폭스

1  6187  4313  4313 ?   -1 D<    1030   3:16 /usr/lib/firefox-3.5b4pre/firefox-3.5

   7610  7622  7621  7610 pts/3      7621 S+    1030   0:00 grep firefox

syslog를 확인하면

Jul 13 10:35:56 호스트 이름 커널 : [222583.872059] 잠김 : 랩탑을 모니터링 할 수 없음

Jul 13 10:35:57 호스트 이름 커널 : [222583.872059] 잠김 : 랩탑을 모니터링 할 수 없음

ps ajx | grep 잠김

루트 9178 0.0 0.0 0? D <13:35 0:00 [잠김]

루트 11039 0.0 0.0 3340796 pts / 3 S <+ 14:18 0:00 grep 잠김

모든 클라이언트 시스템에 대해 동일한 메시지입니다.

프로세스가 'D'상태가되는시기

잠긴 프로세스가 언제 'D'상태가됩니까?

잠긴 프로세스의 목적은 무엇입니까?

답변:


16

D상태 코드는 프로세스가 인터럽트 불가능한 수면 상태임을 의미하며, 다른 의미 일 수 있지만 일반적으로 I / O입니다. lockdNFS 잠금을 관리하는 커널 내부 데몬입니다. 문제는 실제로 더 많은 디버깅이 필요하지만 전반적으로 NFS 통신에있는 것 같습니다.


이것을 피하는 방법? 잠긴 프로세스가 'D'상태가되어서는 안됩니다. 어떻게해야합니까?
ungalnanban

@ungalnanban : I / O를 사용하는 경우 프로세스가 항상 'D'로 들어오고 나가는 것은 불가능합니다. 따라서 귀하의 경우 프로세스는 예를 들어 일부 데이터를 읽거나 쓰거나 잠금을 획득하고 수행 할 수 없으며 계속 대기하려고합니다. 대기중인 것을 디버그해야합니다. NFS 전문가가 아닙니다. 죄송합니다.

15

"무정전 수면"을 의미 합니다.

D    Uninterruptible sleep (usually IO)

이 상태에서 신호를 처리하기 위해 프로세스가 즉시 깨어나지 않습니다. 장치를 수행 할 때 I/O유일한 방법입니다 (그렇지 않으면 데이터가 손상 될 수 있습니다).

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.