No puedo entender por qué el lsof de mi Mac (10.8.2, MacBook Pro) es tan lento.
En mi Mac, lsof
toma más de un minuto:
$ touch /tmp/testfile
$ time lsof /tmp/testfile
real 1m16.483s
user 0m0.029s
sys 1m15.969s
En una típica caja de Linux, ejecutando Ubuntu 12.04, lsof
toma 20 ms:
$ touch /tmp/testfile
$ time lsof /tmp/testfile
real 0m0.023s
user 0m0.008s
sys 0m0.012s
El problema persiste si corro lsof -n
(para evitar las búsquedas de DNS). Además, intenté comprobar qué llamadas al sistema se hacen por lsof
usando dtruss
y descubrió que está llamando proc_info
decenas de miles de veces:
$ 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
¿Alguna idea? He hecho estas pruebas y he obtenido los mismos resultados usando tanto la versión de lsof
incluido con OS X (4.85) así como la última versión de ftp://sunsite.ualberta.ca/pub/Mirror/lsof/ (4.87).
(Para los curiosos, la razón por la que estoy frustrado por esta actuación es que cuando arrastro imágenes a Evernote, se ejecuta lsof
en el proceso de copiar el archivo, causando que mi sistema se cuelgue durante un minuto completo cada vez que intento insertar una imagen en Evernote).