Red Hat Training

A Red Hat training course is available for Red Hat Linux

4.2. 定义网络流量的优先级

在单一服务器系统中运行多项与网络相关的服务时,定义这些服务的网络优先级是很重要的。定义优先级可以保证源自特定服务的数据包比源自其它服务的数据包享有更高优先级。例如,当一台服务器系统同时起到 NFS 服务器和 Samba 服务器的作用时,优先级就显得尤为重要。NFS 必须享有高优先权,因为用户会预期较高吞吐量。Samba 的优先级可以较低,以确保 NFS 服务器有更佳表现。
net_prio 管控器可以用来为 cgroup 中的进程设定网络优先级。之后,优先级会被转译为 Type Of Service(TOS,服务类型)比特,并嵌入每一个数据包中。请参照过程 4.2, “为共享服务的文件设定网络优先级” 中的步骤给两份文件共享的服务(NFS 和 Samba)配置优先级。

过程 4.2. 为共享服务的文件设定网络优先级

  1. net_prio 管控器并未编译进 kernel,它是一个必须手动装载的模块。如需装载,请输入:
    ~]# modprobe netprio_cgroup
  2. 请将 net_prio 子系统附加到 /cgroup/net_prio cgroup 中:
    ~]# mkdir sys/fs/cgroup/net_prio
    ~]# mount -t cgroup -o net_prio none sys/fs/cgroup/net_prio
  3. 请为各项服务创建其 cgroup:
    ~]# mkdir sys/fs/cgroup/net_prio/nfs_high
    ~]# mkdir sys/fs/cgroup/net_prio/samba_low
  4. 如希望 nfs 服务被自动移至 nfs_high cgroup,请将下列行添至 /etc/sysconfig/nfs 文件:
    CGROUP_DAEMON="net_prio:nfs_high"
    此配置可确保 nfs 服务启动或重启时,nfs 服务进程已被移至 nfs_high cgroup。
  5. smbd 后台驻留程序在 /etc/sysconfig 目录中没有配置文件。为实现将 smbd 后台驻留程序自动移至 samba_low cgroup,请添加下列行至 /etc/cgrules.conf 文件:
    *:smbd                net_prio                samba_low
    请注意:此规则会将每一个 smbd 后台驻留程序(不仅仅是 /usr/sbin/smbd)移至 samba_low cgroup 。
    您可以用相似的方式为 nmbdwinbindd 后台驻留程序定义规则,将它们移至 samba_low cgroup。
  6. 请启动 cgred 服务,以载入之前步骤的配置:
    ~]# systemctl start cgred
    Starting CGroup Rules Engine Daemon:                       [  OK  ]
    
  7. 至于此示例的目的,让我们假设两项服务都使用 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
  8. 请启动 nfssmb 服务以检查各自的进程是否已被移至正确的 cgroup:
    ~]# systemctl start smb
    Starting SMB services:                                     [  OK  ]
    ~]# cat /sys/fs/cgroup/net_prio/samba_low/tasks
    16122
    16124
    ~]# systemctl start nfs
    Starting NFS services:                                     [  OK  ]
    Starting NFS quotas:                                       [  OK  ]
    Starting NFS mountd:                                       [  OK  ]
    Stopping RPC idmapd:                                       [  OK  ]
    Starting RPC idmapd:                                       [  OK  ]
    Starting NFS daemon:                                       [  OK  ]
    ~]# cat sys/fs/cgroup/net_prio/nfs_high/tasks
    16321
    16325
    16376
    
    现在,源自于 NFS 的网络信息传输比源自于 Samba 的信息传输有更高的优先级。
过程 4.2, “为共享服务的文件设定网络优先级” 相似,net_prio 子系统可以用来为客户应用程序(如火狐)设定网络优先级。