2010-08-12 4 views
6

launchd tiene la opción run process with low priority I/O. ¿Como funciona exactamente? (¿Qué tan bajo es bajo? ¿Afecta a todas las operaciones?)E/S de baja prioridad en OS X

¿Hay una API que permita E/S de baja prioridad en aplicaciones no iniciadas a través de launchd?

Necesito escanear directorios visualizados (FSEvents) en la aplicación en segundo plano, y me gustaría que esto sea lo más suave posible.

Como alternativa, ¿cómo puedo verificar si el sistema/disco está ocupado haciendo E/S?

Respuesta

4

Launchd usa setiopolicy_np (man page), como se puede ver en el código fuente here.

Las API estándar FSEvents explicadas en this Apple doc son lo suficientemente suaves, por lo que no tiene por qué preocuparse. Solo le informa el hecho de que algo en un directorio mirado se modificó.

Si realmente utiliza /dev/fsevents y obtiene datos brutos, debe tener mucho cuidado de no saturar el sistema.

+0

Uso FSEvents. Sí indica cuándo cambia el directorio, pero luego tengo que escanear ese directorio, a veces de forma recursiva (cuando FSEvents se fusiona o elimina eventos). 'setiopolicy_np' se ve perfecto! – Kornel