4.2. Prioritizing Network Traffic
When running multiple network-related services on a single server system, it is important to define network priorities between these services. Defining these priorities ensures that packets originating from certain services have a higher priority than packets originating from other services. For example, such priorities are useful when a server system simultaneously functions as an NFS and Samba server. The NFS traffic must be of high priority as users expect high throughput. The Samba traffic can be deprioritized to allow better performance of the NFS server.
The
net_prio
subsystem can be used to set network priorities for processes in cgroups. These priorities are then translated into Type Of Service (TOS) bits and embedded into every packet. Follow the steps in Procedure 4.2, “Setting Network Priorities for File Sharing Services” to configure prioritization of two file sharing services (NFS and Samba).
Procedure 4.2. Setting Network Priorities for File Sharing Services
- The
net_prio
subsystem is not compiled in the kernel, it is a module that must be loaded manually. To do so, type:Copy to Clipboard Copied! Toggle word wrap Toggle overflow ~]# modprobe net_prio
~]# modprobe net_prio
- Attach the
net_prio
subsystem to the/cgroup/net_prio
cgroup:Copy to Clipboard Copied! Toggle word wrap Toggle overflow ~]# mkdir /cgroup/net_prio ~]# mount -t cgroup -o net_prio net_prio /cgroup/net_prio
~]# mkdir /cgroup/net_prio ~]# mount -t cgroup -o net_prio net_prio /cgroup/net_prio
- Create two cgroups, one for each service:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ~]# mkdir /cgroup/net_prio/nfs_high ~]# mkdir /cgroup/net_prio/samba_low
~]# mkdir /cgroup/net_prio/nfs_high ~]# mkdir /cgroup/net_prio/samba_low
- To automatically move the
nfs
services to thenfs_high
cgroup, add the following line to the/etc/sysconfig/nfs
file:Copy to Clipboard Copied! Toggle word wrap Toggle overflow CGROUP_DAEMON="net_prio:nfs_high"
CGROUP_DAEMON="net_prio:nfs_high"
This configuration ensures thatnfs
service processes are moved to thenfs_high
cgroup when thenfs
service is started or restarted. For more information about moving service processes to cgroups, refer to Section 2.9.1, “Starting a Service in a Control Group”. - The
smbd
daemon does not have a configuration file in the/etc/sysconfig
directory. To automatically move thesmbd
daemon to thesamba_low
cgroup, add the following line to the/etc/cgrules.conf
file:Copy to Clipboard Copied! Toggle word wrap Toggle overflow *:smbd net_prio samba_low
*:smbd net_prio samba_low
Note that this rule moves everysmbd
daemon, not only/usr/sbin/smbd
, into thesamba_low
cgroup.You can define rules for thenmbd
andwinbindd
daemons to be moved to thesamba_low
cgroup in a similar way. - Start the
cgred
service to load the configuration from the previous step:Copy to Clipboard Copied! Toggle word wrap Toggle overflow ~]# service cgred start Starting CGroup Rules Engine Daemon: [ OK ]
~]# service cgred start Starting CGroup Rules Engine Daemon: [ OK ]
- For the purposes of this example, let us assume both services use the
eth1
network interface. Define network priorities for each cgroup, where1
denotes low priority and10
denotes high priority:Copy to Clipboard Copied! Toggle word wrap Toggle overflow ~]# echo "eth1 1" > /cgroup/net_prio/samba_low ~]# echo "eth1 10" > /cgroup/net_prio/nfs_high
~]# echo "eth1 1" > /cgroup/net_prio/samba_low ~]# echo "eth1 10" > /cgroup/net_prio/nfs_high
- Start the
nfs
andsmb
services and check whether their processes have been moved into the correct cgroups:Copy to Clipboard Copied! Toggle word wrap Toggle overflow ~]# service smb start Starting SMB services: [ OK ] ~]# cat /cgroup/net_prio/samba_low 16122 16124 ~]# service nfs start 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 /cgroup/net_prio/nfs_high 16321 16325 16376
~]# service smb start Starting SMB services: [ OK ] ~]# cat /cgroup/net_prio/samba_low 16122 16124 ~]# service nfs start 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 /cgroup/net_prio/nfs_high 16321 16325 16376
Network traffic originating from NFS now has higher priority than traffic originating from Samba.
Similar to Procedure 4.2, “Setting Network Priorities for File Sharing Services”, the
net_prio
subsystem can be used to set network priorities for client applications, for example, Firefox.