todos recientes programa por muestra mis mac imagenes extension explorador carpeta buscar borrar archivos macos file-io

macos - recientes - finder no muestra archivos



Número máximo de manejadores de archivos abiertos por proceso en OSX(y cómo aumentar) (2)

EDITAR: ahora tengo una solución, pero realmente me gustaría describir conciso cuáles son los diferentes límites, es decir, los establecidos por FD_SIZE, los archivos de límite de launchtl, sysctl -w kern.maxfilesperproc, ulimit, etc.

¿Alguien puede ayudarme a entender los límites en filehandles abiertos en OSX? ulimit me da una respuesta:

$ ulimit -a ... open files (-n) 256

No puedo usar ulimit para cambiar esto, pero la gente sugiere usar launchctl (por ejemplo, http://usrinapto.wordpress.com/2010/03/06/mac-os-x-10-6-max-open-files-too-many-open-files/ )

Sin embargo, usar esto no cambia el límite informado por ulimit .

Sin embargo, parece que mi aplicación puede abrir 10k archivos antes de bloquearse, como lo informa lsof , por ejemplo:

$ lsof -p 87599 | wc 10279 92505 1418903

(se bloquea en algún lugar entre 10279 y 10305 archivos abiertos, de manera confiable)

Entonces, claramente hay límites diferentes para jugar. También he visto hablar (en el enlace de arriba) de FD_SETSIZE .

¿Puede alguien explicarme cuáles son los diferentes límites y cómo se configuran?

En caso de que sea relevante, estoy trabajando en el ajuste de una biblioteca C / C ++ para su uso en Java, usando SWIG.

EDITAR: También he intentado:

sudo sysctl -w kern.maxfiles=20000

sin éxito también

#define FD_SETSIZE 20000

no tiene efecto.

EDITAR: También intenté

launchctl limit maxfiles 20000 20000

sin efecto

EDITAR: Solución:

sysctl -w kern.maxfilesperproc=20000

(a través de http://krypted.com/mac-os-x/maximum-files-in-mac-os-x/ )

EDITAR: He escrito un pequeño programa para probar esto (basado en Cómo aumentar el límite de "máximo de archivos abiertos" en C en Mac OS X ), y encontré que el número máximo de archivos abiertos que puedo pedir es 10240:

#include <sys/resource.h> #include <stdio.h> #include <stdlib.h> #include <errno.h> struct rlimit limit; void setLimit( int l ); void getLimit(); int main( int argc, char* argv[] ) { getLimit(); setLimit(10240); getLimit(); return 1; } void setLimit( int lim ) { limit.rlim_cur = lim; limit.rlim_max = lim; printf( "Setting limit to %d, %d/n", limit.rlim_cur, limit.rlim_max ); if (setrlimit(RLIMIT_NOFILE, &limit) != 0) { printf("setrlimit() failed with errno=%d/n", errno); exit(1); } } void getLimit() { /* Get max number of files. */ if (getrlimit(RLIMIT_NOFILE, &limit) != 0) { printf("getrlimit() failed with errno=%d/n", errno); exit(1); } printf("The soft limit is %llu/n", limit.rlim_cur); printf("The hard limit is %llu/n", limit.rlim_max); }


Para verificar los límites en su ejecución del sistema: ''launchctl limit''. Para cambiar el número máximo de archivos abiertos, ejecute: ''launchctl limit maxfiles 400000 unlimited''. Para cambiar la configuración permanentemente agregue al archivo: ''/etc/launchd.conf'' siguiente línea:

límite maxfiles 400000
ilimitado

( source )

... y ¿por qué necesitas tantos archivos abiertos a la vez?