4.2. 定义网络流量的优先级
在单一服务器系统中运行多项与网络相关的服务时,定义这些服务的网络优先级是很重要的。定义优先级可以保证源自特定服务的数据包比源自其它服务的数据包享有更高优先级。例如,当一台服务器系统同时起到 NFS 服务器和 Samba 服务器的作用时,优先级就显得尤为重要。NFS 必须享有高优先权,因为用户会预期较高吞吐量。Samba 的优先级可以较低,以确保 NFS 服务器有更佳表现。
net_prio 管控器可以用来为 cgroup 中的进程设定网络优先级。之后,优先级会被转译为 Type Of Service(TOS,服务类型)比特,并嵌入每一个数据包中。请参照过程 4.2, “为共享服务的文件设定网络优先级” 中的步骤给两份文件共享的服务(NFS 和 Samba)配置优先级。
过程 4.2. 为共享服务的文件设定网络优先级
net_prio管控器并未编译进 kernel,它是一个必须手动装载的模块。如需装载,请输入:modprobe netprio_cgroup
~]# modprobe netprio_cgroupCopy to Clipboard Copied! Toggle word wrap Toggle overflow - 请将
net_prio子系统附加到/cgroup/net_priocgroup 中:mkdir sys/fs/cgroup/net_prio mount -t cgroup -o net_prio none sys/fs/cgroup/net_prio
~]# mkdir sys/fs/cgroup/net_prio ~]# mount -t cgroup -o net_prio none sys/fs/cgroup/net_prioCopy to Clipboard Copied! Toggle word wrap Toggle overflow - 请为各项服务创建其 cgroup:
mkdir sys/fs/cgroup/net_prio/nfs_high mkdir sys/fs/cgroup/net_prio/samba_low
~]# mkdir sys/fs/cgroup/net_prio/nfs_high ~]# mkdir sys/fs/cgroup/net_prio/samba_lowCopy to Clipboard Copied! Toggle word wrap Toggle overflow - 如希望
nfs服务被自动移至nfs_highcgroup,请将下列行添至/etc/sysconfig/nfs文件:CGROUP_DAEMON="net_prio:nfs_high"
CGROUP_DAEMON="net_prio:nfs_high"Copy to Clipboard Copied! Toggle word wrap Toggle overflow 此配置可确保nfs服务启动或重启时,nfs服务进程已被移至nfs_highcgroup。 smbd后台驻留程序在/etc/sysconfig目录中没有配置文件。为实现将smbd后台驻留程序自动移至samba_lowcgroup,请添加下列行至/etc/cgrules.conf文件:*:smbd net_prio samba_low
*:smbd net_prio samba_lowCopy to Clipboard Copied! Toggle word wrap Toggle overflow 请注意:此规则会将每一个smbd后台驻留程序(不仅仅是/usr/sbin/smbd)移至samba_lowcgroup 。您可以用相似的方式为nmbd和winbindd后台驻留程序定义规则,将它们移至samba_lowcgroup。- 请启动
cgred服务,以载入之前步骤的配置:systemctl start cgred
~]# systemctl start cgred Starting CGroup Rules Engine Daemon: [ OK ]Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 至于此示例的目的,让我们假设两项服务都使用
eth1网络接口;给每一个 cgroup 定义优先级:1表示优先级低,10表示优先级高:echo "eth1 1" > /sys/fs/cgroup/net_prio/samba_low/net_prio.ifpriomap echo "eth1 10" > /sys/fs/cgroup/net_prio/nfs_high/net_prio.ifpriomap
~]# echo "eth1 1" > /sys/fs/cgroup/net_prio/samba_low/net_prio.ifpriomap ~]# echo "eth1 10" > /sys/fs/cgroup/net_prio/nfs_high/net_prio.ifpriomapCopy to Clipboard Copied! Toggle word wrap Toggle overflow - 请启动
nfs和smb服务以检查各自的进程是否已被移至正确的 cgroup:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 现在,源自于 NFS 的网络信息传输比源自于 Samba 的信息传输有更高的优先级。
与过程 4.2, “为共享服务的文件设定网络优先级” 相似,
net_prio 子系统可以用来为客户应用程序(如火狐)设定网络优先级。