A partir desta página da web :
Você pode inserir os comandos ethtool em /etc/rc.local
(ou o equivalente da sua distribuição), onde os comandos são executados após a conclusão do nível de execução atual, mas isso não é o ideal. Os serviços de rede podem ter iniciado durante o nível de execução e os comandos ethtool tendem a interromper o tráfego da rede. Seria mais preferível ter os comandos aplicados à medida que a interface é criada.
O serviço de rede no CentOS tem a capacidade de fazer isso. O script /etc/sysconfig/network-scripts/ifup-post
verifica a existência de /sbin/ifup-local
e, se existir, executa-o com o nome da interface como parâmetro (por exemplo: /sbin/ifup-local eth0
)
Podemos criar este arquivo com o toque /sbin/ifup-local
para torná-lo executável com chmod +x /sbin/ifup-local
definir seu contexto do SELinux com chcon --reference /sbin/ifup /sbin/ifup-local
e depois abri-lo em um editor.
Um script simples para aplicar as mesmas configurações a todas as interfaces seria algo como
#!/bin/bash
if [ -n "$1" ]; then
/sbin/ethtool -G $1 rx 4096 tx 4096
/sbin/ethtool -K $1 tso on gso on
fi
Lembre-se de que isso tentará aplicar as configurações em TODAS as interfaces, mesmo no loopback.
Se temos interfaces diferentes, queremos aplicar configurações diferentes, ou queremos pular o loopback, podemos fazer uma declaração de caso
#!/bin/bash
case "$1" in
eth0)
/sbin/ethtool -G $1 rx 16384 tx 16384
/sbin/ethtool -K $1 gso on gro on
;;
eth1)
/sbin/ethtool -G $1 rx 64 tx 64
/sbin/ethtool -K $1 tso on gso on
/sbin/ip link set $1 txqueuelen 0
;;
esac
exit 0
Agora as configurações do ethtool são aplicadas às interfaces conforme elas são iniciadas, todas as possíveis interrupções na comunicação de rede são feitas à medida que a interface é ativada e seu servidor pode continuar a inicialização com recursos de rede completos.