swapon invalid fallocate failed create argument c++ linux paging swapfile

c++ - fallocate - swapon failed: invalid argument



¿Cómo prevenir la paginación para un programa/proceso? (3)

Al inicio del programa, llame al:

mlockall(MCL_CURRENT | MCL_FUTURE);

(Si no tiene la fuente para el programa, deberá ejecutar el proceso con ptrace para hacer esto).

Tenga en cuenta que esto aumentará las posibilidades de fallos en las asignaciones de memoria realizadas por el proceso.

Tengo un programa que requiere mucha memoria, como 2/3 de todo el ram físico. Después de algún tiempo de ejecución, mi sistema operativo comienza a cambiar el programa a hdd. Pero necesito que el programa responda muy rápido todo el tiempo, así que necesito evitar la paginación para ese proceso.

¿Cómo se puede evitar que el sistema operativo cambie un proceso?

¡Gracias por cualquier ayuda!


Bueno, hay mlock para bloquear la memoria (indicando al kernel que es posible que no se pueda cambiar), pero está destinado a cantidades de memoria relativamente pequeñas y requeriría una modificación del programa.

La otra opción podría ser ajustar la "swappiness" de Linux, es decir, su tendencia a intercambiar páginas. Vea here para una discusión interesante. Sin embargo, eso no es posible por proceso.

No tengo conocimiento de ninguna solución por proceso para su problema.


Use mmap () en lugar de malloc, y use el indicador "MAP_LOCKED". (Funciona en linux> 2.5.37)