내 Mac (10.8.2, MacBook Pro)의 lsof가 왜 그렇게 느린 지 알 수 없습니다.
내 Mac에서는 lsof
1 분 이상이 걸립니다.
$ touch /tmp/testfile
$ time lsof /tmp/testfile
real 1m16.483s
user 0m0.029s
sys 1m15.969s
일반적인 Linux 상자에서 Ubuntu 12.04를 실행하는 lsof
데 20ms가 걸립니다.
$ touch /tmp/testfile
$ time lsof /tmp/testfile
real 0m0.023s
user 0m0.008s
sys 0m0.012s
lsof -n
DNS 조회를 피하기 위해 실행하면 문제가 지속됩니다 . 또한을 lsof
사용하여 어떤 시스템 호출이 이루어 졌는지 확인하려고 시도했지만 수만 번 dtruss
호출되고 있음을 발견했습니다 proc_info
.
$ sudo dtruss lsof /tmp/testfile 2> /tmp/dump
$ cat /tmp/dump | sort | uniq -c | sort -nr | head
10000 proc_info(0x2, 0x1199, 0x8) = 1272 0
6876 proc_info(0x2, 0x45, 0x8) = 1272 0
2360 proc_info(0x2, 0x190D, 0x8) = 1272 0
1294 proc_info(0x2, 0xFF, 0x8) = 1272 0
1152 proc_info(0x2, 0x474, 0x8) = 1272 0
1079 proc_info(0x2, 0x2F, 0x8) = 1272 0
709 proc_info(0x2, 0xFE, 0x8) = 1272 0
693 proc_info(0x2, 0x1F, 0x8) = 1272 0
623 proc_info(0x2, 0x11A, 0x8) = 1272 0
528 proc_info(0x2, 0xF7, 0x8) = 1272 0
어떤 아이디어? 이 테스트를 실행 lsof
했으며 OS X (4.85) 에 포함 된 버전과 ftp://sunsite.ualberta.ca/pub/Mirror/lsof/(4.87) 의 최신 버전을 사용하여 동일한 결과를 얻었습니다 .
(호기심 때문에이 성능에 실망한 이유는 이미지를 Evernote로 드래그 할 때 lsof
파일을 복사하는 과정에서 이미지를 삽입하려고 할 때마다 시스템이 최대 1 분 동안 중단되기 때문에 이미지를 드래그 하는 것입니다 Evernote에서.)
lsof
인수없이 (모든 파일을 나열하기 위해) 실행하면 1 분 동안 중단 된 다음 모든 파일을 인쇄합니다. 그러나 언급했듯이 / tmp 디렉토리에 단일 파일이 열려있는 사람을 나열하려고하면 여전히 정지하므로 문제가되는 특정 열린 파일이 아닙니다. 또한 AirServer 프로세스를 실행하지 않습니다.
sudo opensnoop -n lsof
.
sudo opensnoop -n lsof
와 lsof /tmp/testfile
두 개의 탭에, 단지 세 개의 파일을 열되었다고보고 opensnoop. 따라서 문제는 파일을 너무 많이 proc_info
열지 말고 과도한 호출 과 관련된 것이어야 합니다.