Tenemos un trabajo regular que hace du
resúmenes de una serie de subdirectorios, selecciona a los peores delincuentes y utiliza la salida para determinar si hay cosas que están aumentando rápidamente para detectar posibles problemas. Usamos diff
contra las instantáneas para compararlas.
Hay un directorio de nivel superior, con un número (unos cientos) de subdirectorios, cada uno de los cuales puede contener 10's de miles de archivos cada uno (o más).
Un " du -s
" en este contexto puede ser muy agresivo con IO, haciendo que nuestro servidor saque su caché y luego picos masivos de IO que son un efecto secundario muy desagradable.
¿Qué estrategia se puede usar para obtener los mismos datos, sin los efectos secundarios no deseados?
disk-usage
io
limit
Danny Staple
fuente
fuente
Respuestas:
Echa un vistazo a
ionice
. Deman ionice
:Para ejecutar
du
con la clase de E / S "inactiva", que es la prioridad más baja disponible, puede hacer algo como esto:Esto debería evitar
du
interferir con otras E / S del proceso. También es posible que desee considerar volver a crear el programa para reducir su prioridad de CPU, de esta manera:También puede hacer ambas cosas en el momento de la inicialización:
fuente
renice
lugar denice
. Para empezardu
con tanto ionice y agradable, puede encadenar dos programas:nice -n19 ionice -c3 du
.nice
en sí mismo también afecta la prioridad del planificador de E / S, no solo la CPU.nice
solo afecta la simplicidad de la CPU (que puede afectar indirectamente la E / S, pero no debería afectar la prioridad del planificador de E / S). ¿Dónde ves este comportamiento? ¿Está documentado en alguna parte?nice
, y solo habla sobre cuánticos de tiempo base de CPU. ¿Tienes alguna idea de en qué parte del libro estaba? Me interesaría leer una fuente autorizada que los estados él, es que no se mencionan enman nice
,man 2 nice
,man 2 setpriority
,info nice
oinfo 'nice invocation'
por lo que yo puedo decir, que es extraño porque algunos de estos van en un poco de detalle sobre cómo losnice
trabajos de llamadas y lo que haceSi tiene toneladas de archivos en un solo directorio, esto puede ser responsable de los picos de E / S, ya que muchos sistemas de archivos no manejan bien los árboles de archivos grandes en un solo directorio. Dividirlo en más subdirectorios puede ayudar allí. Si tiene más de 10k archivos en un solo directorio y eso está causando problemas, probablemente debería dividirlo.
En cuanto al seguimiento del uso del disco, primero puede echar un vistazo
df
, si el valor de uso allí no aumentó rápidamente, los subdirectorios tampoco lo hicieron y puede omitirlo pordu
completo.Otra alternativa puede ser un sistema de cuota de disco que mantiene un seguimiento continuo del uso, si su sistema de archivos lo admite.
fuente
df
no funcionaría del todo: el problema es que tenemos scripts de limpieza, por lo que es posible que no veamos ningún cambio, pero hemos perdido una advertencia temprana para un trabajo automático que está ocupando agresivamente espacio en el disco. Usamos zabbix para monitorear el uso general del disco, pero conocer los directorios individuales donde las cosas se vuelven un poco locas es bastante esencial.Además
ionice
, puede intentar que los accesos al disco sean más eficientes. Esto se puede intentar ejecutandoprimero (tal vez
ionice
también). No funcionará si hay demasiados archivos. Cuántos es demasiado depende de la cantidad de RAM libre.fuente