Come posso iniziare tutti i miei processi con gentilezza 5


8

So che i valori di gentilezza sono ereditati dal valore di gentilezza del processo genitore, ma posso cambiare globalmente il valore di gentilezza predefinito per un particolare utente (me stesso).

In questo caso ho in mente un piccolo server di convenienza, a cui si accede esclusivamente tramite ssh. Quindi, penso che potrei cambiare la mia shell predefinita da /bin/basha /etc/bash5mentre /etc/bash5è questo script:

#!/bin/sh
nice -n 5 /bin/bash

#file privileges: root:root 755

Questo mi sembra un attacco terribile e soggetto a errori. Deve esserci un modo migliore.

Sono principalmente interessato a soluzioni generali, che si applicherebbero anche a un sistema desktop / laptop.


Modifica: ho provato la limits.confmodifica suggerita , ma non funziona come previsto:

root@server# addgroup nice
root@server# adduser myself nice
root@server# echo '@nice soft nice 5' >> /etc/security/limits.conf

Quindi, dal mio computer client, dico

myself@client$ ssh server
myself@server$ sleep 1h &
myself@server$ htop

Ora, il sleepprocesso ha un valore iniziale di gentilezza0 , ma se cambio il valore con F819 e poi provo a ridurlo di nuovo con F7 esso si ferma a5 .

Modifica2: soluzione

Invece di utilizzare l' niceelemento in limits.conf, devi effettivamente usarlo prioritysebbene sia controintuitivo.

@nice soft priority 5

Forse metti un renice -n 5nel tuo ~/.profile?
jw013

@ jw013: è un'idea migliore del mio bash5approccio, ti do questo. Ma si rompe ancora se dico ssh myserver -- somecommandno?
Maschera di bit

@bitmask. Non riesco a riprodurre il tuo risultato per limits.conf. A cosa serve il tuo output ps -o pid,nice,cmd?
donothings successo

1
Pubblica soluzioni ai tuoi problemi come risposte , piuttosto che modifiche alla tua domanda. Grazie! (Va bene fornire la tua risposta alla tua domanda.)
mattdm

In un'altra nota: questo non è quello che hai chiesto, ma potresti scoprire che i cgroups forniscono un modo più efficace di fare ciò che (priorità ridotta per un determinato utente) che desideri nice.
Mattdm,

Risposte:


7

È possibile impostare la priorità per un determinato utente nel /etc/security/limits.conffile.

root       hard/soft     priority    10

In questo modo è possibile impostare un limite rigido o leggero per ogni particolare utente. Quindi tutti i processi che questo utente root avvierà avranno 5 come valore di priorità predefinito.

Secondo la pagina di Wikipedia :

L'esatto effetto matematico dell'impostazione di un particolare valore di precisione per un processo dipende dai dettagli di come lo scheduler è progettato su quella implementazione di Unix.

Ecco l'istantanea che mostra la procedura sopra descritta:

Questa immagine è la schermata del file /etc/security/limits.conf

Questa è un'istantanea del limits.conffile che mostra una riga che ho aggiunto alla fine come

root     hard     priority    15

Dopo averlo modificato, ho iniziato una sessione ssh usando il comando ssh root@localhost

inserisci qui la descrizione dell'immagine

Questo screenshot mostra le ultime due righe che mostrano il buon valore degli ultimi due processi -bashe sshd: root@pts/3di essere 15.

modificare

Ecco l'istantanea che mostra che puoi aumentare e diminuire la gentilezza di un processo inserisci qui la descrizione dell'immagine

Modifica 2:

Ecco lo snapshot che mostra che anche un normale utente può modificare il valore di gentilezza.

inserisci qui la descrizione dell'immagine


Stavo parlando di gentilezza , non di priorità. E come ho detto sull'altra risposta, non sembra essere accettato. Devo riavviare qualche demone o qualcosa del genere?
maschera di bit

@bitmask: questo sta funzionando nel mio ... Ho intenzione di aggiungere un'istantanea nella mia risposta aspetta ...
pradeepchhetri

@bitmask: ho aggiornato la risposta con le istantanee .. :)
pradeepchhetri

C'è una differenza tra gentilezza e priorità . Compro totalmente che puoi cambiare la dura priorità , ma voglio cambiare la delicatezza . È una cosa diversa.
Maschera di bit

@bitmask: Accirind alla pagina Wiki, A niceness of −20 is the highest priority and 19 or 20 is the lowest priority. Quindi prima devi capire che la gentilezza e la priorità sono uguali ... E voglio chiarire che questi sono hard and soft limitsma non è come hard prioritye soft niceness..
pradeepchhetri

1

Esso si presenta come è possibile impostare una priorità predefinita per un utente in limits.conf, con una linea come:

username    soft  priority  5

Vedi man limits.conf .


Suona alla grande. Ho appena dato un colpo (usando un gruppo speciale però) @nice soft nice 5, ma sshing nella macchina e l'esecuzione di sleep 1hspettacoli come avere gentilezza 0in htop. Qualche idea sul perché l'impostazione non sia stata accettata? Sono in debian squeeze.
Maschera di bit

cosa c'è @nicenel commento sopra .. dovrebbe essere quello dell'utente della tua macchina linux.
pradeepchhetri,

@pradeepchhetri: vedi la modifica del mio PO, per favore. È un nome di gruppo.
Maschera di bit

perché @ davanti al nome del gruppo mentre si inserisce una voce nel limits.conffile?
pradeepchhetri,

@pradeepchhetri: Perché la pagina man lo dice?
Maschera di bit
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.