Alterações persistentes em / proc / sys / sunrpc / tcp_slot_table_entries

1

Estou tentando fazer uma mudança persistente para sunrpc.tcp_slot_table_entries em um Linux CentOS 5.5. Esse valor foi considerado importante para o desempenho de nossos clientes NFS e deve ser definido antes que as montagens do NFS sejam concluídas.

Simplesmente colocar o valor em /etc/sysctl.conf não funciona porque /etc/rc.d/rc.sysinit (que faz o sysctl -p) é executado antes do módulo sunrpc ser carregado.

O mesmo problema com o RHEL 4:

Eu tentei:

  • coloque install sunrpc /sbin/modprobe -q --ignore-install sunrpc;/sbin/sysctl -w sunrpc.tcp_slot_table_entries=64 em /etc/modprobe.conf (e em /etc/modprobe.d/sunrpc )
  • coloque SUBSYSTEM=="module" ACTION=="add" DEVPATH=="*/sunrpc" RUN+="/sbin/sysctl -w sunrpc.tcp_slot_table_entries=64" (talvez tenha que ser alterado para o CentOS 5) em código% mas sem sucesso.

E eu prefiro não modificar /etc/udev/rules.d/23-sunrpc.rules (do pacote initscripts).

Então, você conseguiu fazer isso corretamente em um CentOS 5 e, em caso afirmativo, como?

Editar: encontrado em /etc/init.d/netfs :

install sunrpc /sbin/modprobe --first-time --ignore-install sunrpc && { /bin/mount -t rpc_pipefs sunrpc /var/lib/nfs/rpc_pipefs > /dev/null 2>&1 || :; }

É por isso que minha adição ao modprobe não foi levada em conta. Mas não tenho certeza se devo modificar diretamente esse arquivo, pois ele pode ser substituído pelas atualizações module-init-tools ...

    
por David142 27.09.2010 / 17:14

4 respostas

1

Finalmente eu criei um script init quase fictício, inserido no S15 (veja em /etc/rc3.d/), já que o módulo é carregado no S14 (nfslock) e usado no S25 (netfs).

/etc/init.d/sunrpc_tuning :

#!/bin/sh
#
# sunrpc_tuning       Tunes /proc/sys/sunrpc (launched after lockd)
#
# chkconfig: 345 15 85
# description: set values to sunrpc after module is loaded
# probe: true

case "$1" in
   start)
      echo "Setting sunrpc.tcp_slot_table_entries ..."
      /sbin/sysctl -w sunrpc.tcp_slot_table_entries=128
      ;;
   *) ;;
esac

Então: chkconfig --add sunrpc_tuning

    
por 28.09.2010 / 16:28
1

Estou executando o RHEL5.4 e parece que, de alguma forma, as configurações do sysctl.conf estão sendo aplicadas (de alguma forma?) antes que o netfs monte volumes. Como você verificou isso?

Eu modifiquei o initscript do netfs, para escrever o valor sunrpc.tcp_slot_table_entries antes que as montagens do nfs fossem acionadas, e ele escreveu '128' em relação ao padrão '16'.

  start)
    # Let udev handle any backlog before trying to mount file systems
    /sbin/udevsettle --timeout=30
    [ -n "$NFSFSTAB" ] &&
      {
        [ ! -f /var/lock/subsys/portmap ] && service portmap start
 /sbin/sysctl sunrpc.tcp_slot_table_entries >> /tmp/sunrpc
        action $"Mounting NFS filesystems: " mount -a -t nfs,nfs4
    
por 02.11.2011 / 15:02
0

Você pode colocar /sbin/sysctl -w sunrpc.tcp_slot_table_entries=64 em /etc/rc.d/rc.local .

    
por 27.09.2010 / 19:17
0

Eu tentei algo semelhante ao que o David142 tentou, e isso foi em um sistema RedHat 6.3, mas eu estava achando que mesmo no S15 ou S20, ele ainda não estava sendo definido desde que o módulo do kernel sunrpc não foi carregado. Mesmo quando o S52netfs iniciar e tentar executar o sysctl -p, ele falhará.

A correção que tentei era semelhante à sua, mas adicionei um comando modprobe:

#!/bin/bash
#
# set_nfs_parms        Set kernel parmeters for NFS
#
# chkconfig: 235 15 85
# description: At boot time, sunrpc.tcp_slot_table_entries cannot be set since
#              the nfs module is not loaded.  This sets it later in the boot
#              sequence. 
#

# Source function library.
. /etc/rc.d/init.d/functions

case "$1" in
    start)
          #/sbin/sysctl -w sunrpc.tcp_slot_table_entries=128
          /sbin/modprobe sunrpc
          /sbin/sysctl -p
       ;;
    stop)
       ;;
    *)
       echo $"Usage: $0 {start}"
       exit 2
esac
exit $?

Depois disso, o parâmetro parece ser configurado de forma confiável após uma reinicialização.

    
por 29.05.2014 / 19:32