Hardware Upgrade Forum

Hardware Upgrade Forum (https://www.hwupgrade.it/forum/index.php)
-   Linux, Unix, OS alternativi (https://www.hwupgrade.it/forum/forumdisplay.php?f=34)
-   -   Disabilitare lo swap per un singolo processo senza permessi di root (https://www.hwupgrade.it/forum/showthread.php?t=2834854)


Cait Sith 16-11-2017 09:23

Disabilitare lo swap per un singolo processo senza permessi di root
 
Vorrei sapere se c'è un modo per un utente senza permessi di root di lanciare un processo facendo in modo che questo non usi lo swap anche se le impostazioni di sistema lo consentono.

sacarde 16-11-2017 12:37

perche'... con i permessi di root riusciresti a farlo?

Cait Sith 16-11-2017 13:50

Per il singolo processo non lo so, ma se avessi i privilegi di root potrei disabilitare lo swap impostando la swappiness a 0.
Nel mio caso non lo posso fare, ma visto che il processo che lancio è un processo utente, chiedere di non usare lo swap per un mio processo mi sembra una richiesta lecita da fare al sistema operativo.

sacarde 16-11-2017 14:42

- https://www.linuxquestions.org/quest...ss-4175600845/


- https://unix.stackexchange.com/quest...ness-for-linux

pabloski 16-11-2017 16:30

Quote:

Originariamente inviato da Cait Sith (Messaggio 45178144)
Vorrei sapere se c'è un modo per un utente senza permessi di root di lanciare un processo facendo in modo che questo non usi lo swap anche se le impostazioni di sistema lo consentono.

A parte i cgroups, l'altro modo e' usare mlock http://man7.org/linux/man-pages/man2/mlock.2.html

Pero' ho dubbi sulla necessita' di fare cio'. Se il sistema e' settato correttamente, un applicativo che necessita di molta ram dovrebbe swappare pochissimo ( e quindi diventa inutile settare manualmente ). Se non c'e' sufficiente ram, o swappi o vai in out of memory.

Cait Sith 16-11-2017 17:03

La mlock l'avevo vista in giro sul web, solo che mi pare di capire che devo chiamarla sulla singola allocazione, e questo è un problema perchè dovrei modificare pesantemente il codice sorgente e soprattutto capire quali sono le allocazioni più grandi.
I cgroups non li conoscevo, adesso provo a leggere bene per vedere se fanno al caso mio.

Comunque il problema è che il programma in questione è stato scritto con l'ipotesi di swap disabilitato. Purtroppo con certi parametri deve allocare molta memoria e se va in swap intasa la macchina. Quindi, nel caso in cui la memoria richiesta sia troppa, preferisco che le malloc falliscano: in questo caso il programma ritorna un messaggio di errore forzando l'utente a modificare i parametri.

Cait Sith 16-11-2017 18:16

Come non detto: ho visto che con l'mlock si può fare una sola chiamata per tutte le allocazioni del processo con l'istruzione:

Codice:

mlockall(MCL_CURRENT | MCL_FUTURE);
Adesso verifico se funzione e poi vi faccio sapere.


Tutti gli orari sono GMT +1. Ora sono le: 18:24.

Powered by vBulletin® Version 3.6.4
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Hardware Upgrade S.r.l.