¿Cómo puedo hacer que todos mis procesos comiencen con amabilidad? 5

8

Sé que los valores de bondad se heredan del valor de bondad del proceso principal, pero puedo cambiar globalmente el valor de bondad predeterminado para un usuario en particular (yo mismo).

En este caso, tengo en mente un pequeño servidor de conveniencia, al que se accede exclusivamente a través de ssh. Entonces, creo que podría cambiar mi shell predeterminado de /bin/basha /etc/bash5mientras /etc/bash5este script es:

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

#file privileges: root:root 755

Esto me parece un hack terrible y propenso a errores. Debe haber una mejor manera.

Me interesan principalmente las soluciones generales, que también se aplicarían a un sistema de escritorio / portátil.


Editar: probé el limits.confcambio sugerido , pero no funciona como se esperaba:

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

Entonces, desde mi máquina cliente, digo

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

Ahora, el sleepproceso tiene un valor inicial de amabilidad de0 , pero si cambio el valor F8a 19 y luego trato de reducirlo nuevamente, F7 se detiene en5 .

Edit2: Solución

En lugar de usar el niceelemento limits.conf, debes usarlo priorityaunque sea contra-intuitivo.

@nice soft priority 5
máscara de bits
fuente
Tal vez poner un renice -n 5en tu ~/.profile?
jw013
@ jw013: Esa es una mejor idea que mi bash5enfoque, te doy esto. Pero todavía se rompe si digo ssh myserver -- somecommandque no?
máscara de bits el
@bitmask. No puedo reproducir tu resultado para limits.conf. ¿Para qué es tu salida ps -o pid,nice,cmd?
donothings exitosamente
1
Publique soluciones a sus propios problemas como respuestas , en lugar de editar sus preguntas. ¡Gracias! (Está bien dar su propia respuesta a su propia pregunta.)
mattdm
En otra nota: esto no es lo que pediste, pero puedes encontrar que los cgroups proporcionan una forma más efectiva de hacer lo que quieres (prioridad reducida para un determinado usuario) nice.
mattdm

Respuestas:

7

Puede establecer la prioridad para un usuario en particular en el /etc/security/limits.confarchivo.

root       hard/soft     priority    10

De esta manera, puede establecer un límite rígido o suave para cualquier usuario en particular. Por lo tanto, todos los procesos que iniciará este usuario raíz tendrán 5 como el valor de prioridad predeterminado.

Según la página de Wikipedia :

El efecto matemático exacto de establecer un valor de bondad particular para un proceso depende de los detalles de cómo está diseñado el planificador en esa implementación de Unix.

Aquí está la instantánea que muestra que el procedimiento anterior funciona:

Esta imagen es la captura de pantalla del archivo /etc/security/limits.conf

Esta es una instantánea del limits.confarchivo que muestra una línea que finalmente agregué como

root     hard     priority    15

Después de cambiar esto, comencé una sesión ssh usando el comando ssh root@localhost

ingrese la descripción de la imagen aquí

Esta captura de pantalla muestra las dos últimas líneas, que muestra el buen valor de los últimos dos procesos -bashy sshd: root@pts/3ser 15.

Editar

Aquí está la instantánea que muestra que puede aumentar y disminuir la simplicidad de un proceso ingrese la descripción de la imagen aquí

Edición 2:

Aquí está la instantánea que muestra que incluso el usuario normal puede cambiar el valor de simpatía.

ingrese la descripción de la imagen aquí

Pradeepchhetri
fuente
Estaba hablando de amabilidad , no de prioridad. Y como dije en la otra respuesta, no parece ser aceptado. ¿Tengo que reiniciar algún demonio o algo así?
máscara de bits el
@bitmask: éste está trabajando en la mía ... Voy a añadir instantánea en mi respuesta espera ...
pradeepchhetri
@bitmask: He actualizado la respuesta con las instantáneas .. :)
pradeepchhetri
Hay una diferencia entre amabilidad y prioridad . Estoy totalmente seguro de que puede cambiar la prioridad difícil , pero quiero cambiar la suavidad suave . Eso es algo diferente.
máscara de bits el
@bitmask: Accirind a la página wiki A niceness of −20 is the highest priority and 19 or 20 is the lowest priority. Así que primero que tienes que entender que la amabilidad y la prioridad se same..And quiero aclarar que estos son hard and soft limits, pero no es igual hard priorityy soft niceness..
pradeepchhetri
1

Se ve como se puede establecer una prioridad predeterminada de un usuario en limits.conf, con una línea como:

username    soft  priority  5

Ver man limit.conf .

donothings exitosamente
fuente
Suena genial. Yo sólo le di un disparo (usando un grupo especial, aunque) @nice soft nice 5pero sshing en la máquina y la ejecución de sleep 1hprogramas que tienen la amabilidad 0de htop. ¿Alguna pista de por qué no se aceptó la configuración? Estoy en Debian Squeeze.
máscara de bits el
lo que está @niceen el comentario anterior ... debería ser el del usuario de su máquina Linux.
pradeepchhetri
@pradeepchhetri: Vea la edición de mi OP, por favor. Es un nombre de grupo.
máscara de bits el
¿Por qué @ delante del nombre del grupo al poner una entrada en el limits.confarchivo?
pradeepchhetri
@pradeepchhetri: ¿Porque la página del manual lo dice?
máscara de bits el