A partir de Solaris 10 los parámetros de kernel ya no se configuran en /etc/system. Se ha creado la figura del project. Básicamente se puede crear un proyecto y asignarlo a un usuario, el cual toma los valores de recursos que éste marca.

Se pueden ver los proyectos haciendo un cat de /etc/project:

# cat /etc/project
system:0::::
user.root:1::::
noproject:2::::
default:3::::
group.staff:10::::

En este caso no hay valores configurados para ninguno de ellos. Por defecto los usuarios nuevos toman como proyecto el default. Podemos ver el proyecto que tenemos asignado para el usuario actual haciendo:

# id -p
uid=0(root) gid=0(root) projid=1(user.root)

Si queremos hacer un cambio puntual sin que éste se guarde definitvamente podemos ejecutar el siguiente comando (en este ejemplo fijamos el parámetro max-shm-memory a 22gb). Este cambio es immediato y no requiere reinicio de la máquina:

# prctl -n project.max-shm-memory -v 22gb -r -i project default
# prctl -n project.max-shm-memory -i project default
project: 3: default
NAME    PRIVILEGE       VALUE    FLAG   ACTION                       RECIPIENT
project.max-shm-memory
privileged      22.0GB –   deny                                 –
system          16.0EB    max   deny

Si queremos que los cambios queden guardados de forma permanente, usaremos los comandos projmod/projadd:

$ projmod -sK “project.max-shm-memory=(priv,8gb,deny)” default
$ cat /etc/project
system:0::::
user.root:1::::
noproject:2::::
default:3::::project.max-shm-memory=(priv,8589934592,deny)
group.staff:10::::
$ su – oracle
# id -p
uid=101(oracle) gid=101(dba) projid=3(default)
# prctl -n project.max-shm-memory -i project default
project: 3: default
NAME    PRIVILEGE       VALUE    FLAG   ACTION                       RECIPIENT
project.max-shm-memory
privileged      8.00GB –   deny                                 –
system          16.0EB    max   deny                                 –

Y para borrar del project un parámetro que queramos dejar en su valor por defecto usaremos el flag r en vez de s:

# projmod -rK “project.max-sem-ids” default

A continuación un ejemplo típico para un servidor con 24Gbytes de memoria RAM:

# projmod -sK “project.max-shm-memory=(priv,22gb,deny)” default
# projmod -sK “project.max-sem-ids=(priv,128,deny)” default
# projmod -sK “project.max-shm-ids=(priv,128,deny)” default
# projmod -sK “process.max-sem-nsems=(priv,256,deny)” default

Podemos ver el resultado de estos comandos en el archivo /etc/project:

# cat /etc/project
system:0::::
user.root:1::::
noproject:2::::
default:3::::process.max-sem-nsems=(priv,256,deny);project.max-sem-ids=(priv,128,deny); project.max-shm-ids=(priv,128,deny);project.max-shm-memory=(priv,23622320128,deny)
#