A veces, es posible que el sistema no disponga de la cantidad adecuada de memoria libre del núcleo para asignar una memoria intermedia del tamaño deseado debido a que no hay suficiente memoria disponible o a que el consumidor de DTrace ha superado uno de los límites descritos en el Capítulo 16Opciones y optimizables. Puede configurar la directiva para el fallo de asignación de la memoria intermedia mediante la opción bufresize, que se establece de forma predeterminada en auto. Con la directiva de cambio de tamaño de la memoria intermedia auto, el tamaño de una memoria intermedia se divide en dos hasta que se realice satisfactoriamente una asignación. dtrace(1M) genera un mensaje cuando la memoria intermedia que se asigna tiene un tamaño inferior al solicitado:
# dtrace -P syscall -b 4g dtrace: description 'syscall' matched 430 probes dtrace: buffer size lowered to 128m ... |
o:
# dtrace -P syscall'{@a[probefunc] = count()}' -x aggsize=1g dtrace: description 'syscall' matched 430 probes dtrace: aggregation size lowered to 128m ... |
También puede intervenir manualmente cuando se produzca un fallo de asignación de la memoria intermedia, ajustando bufresize en manual. Con esta directiva, un fallo de asignación provocará que DTrace no pueda iniciarse:
# dtrace -P syscall -x bufsize=1g -x bufresize=manual dtrace: description 'syscall' matched 430 probes dtrace: could not enable tracing: Not enough space # |
La opción bufresize determina la directiva de cambio de tamaño de todas las memorias intermedias: principales, especulativas y de adición.