56 lines
		
	
	
		
			2.5 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
			
		
		
	
	
			56 lines
		
	
	
		
			2.5 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
Network priority cgroup
 | 
						|
-------------------------
 | 
						|
 | 
						|
The Network priority cgroup provides an interface to allow an administrator to
 | 
						|
dynamically set the priority of network traffic generated by various
 | 
						|
applications
 | 
						|
 | 
						|
Nominally, an application would set the priority of its traffic via the
 | 
						|
SO_PRIORITY socket option.  This however, is not always possible because:
 | 
						|
 | 
						|
1) The application may not have been coded to set this value
 | 
						|
2) The priority of application traffic is often a site-specific administrative
 | 
						|
   decision rather than an application defined one.
 | 
						|
 | 
						|
This cgroup allows an administrator to assign a process to a group which defines
 | 
						|
the priority of egress traffic on a given interface. Network priority groups can
 | 
						|
be created by first mounting the cgroup filesystem.
 | 
						|
 | 
						|
# mount -t cgroup -onet_prio none /sys/fs/cgroup/net_prio
 | 
						|
 | 
						|
With the above step, the initial group acting as the parent accounting group
 | 
						|
becomes visible at '/sys/fs/cgroup/net_prio'.  This group includes all tasks in
 | 
						|
the system. '/sys/fs/cgroup/net_prio/tasks' lists the tasks in this cgroup.
 | 
						|
 | 
						|
Each net_prio cgroup contains two files that are subsystem specific
 | 
						|
 | 
						|
net_prio.prioidx
 | 
						|
This file is read-only, and is simply informative.  It contains a unique integer
 | 
						|
value that the kernel uses as an internal representation of this cgroup.
 | 
						|
 | 
						|
net_prio.ifpriomap
 | 
						|
This file contains a map of the priorities assigned to traffic originating from
 | 
						|
processes in this group and egressing the system on various interfaces. It
 | 
						|
contains a list of tuples in the form <ifname priority>.  Contents of this file
 | 
						|
can be modified by echoing a string into the file using the same tuple format.
 | 
						|
for example:
 | 
						|
 | 
						|
echo "eth0 5" > /sys/fs/cgroups/net_prio/iscsi/net_prio.ifpriomap
 | 
						|
 | 
						|
This command would force any traffic originating from processes belonging to the
 | 
						|
iscsi net_prio cgroup and egressing on interface eth0 to have the priority of
 | 
						|
said traffic set to the value 5. The parent accounting group also has a
 | 
						|
writeable 'net_prio.ifpriomap' file that can be used to set a system default
 | 
						|
priority.
 | 
						|
 | 
						|
Priorities are set immediately prior to queueing a frame to the device
 | 
						|
queueing discipline (qdisc) so priorities will be assigned prior to the hardware
 | 
						|
queue selection being made.
 | 
						|
 | 
						|
One usage for the net_prio cgroup is with mqprio qdisc allowing application
 | 
						|
traffic to be steered to hardware/driver based traffic classes. These mappings
 | 
						|
can then be managed by administrators or other networking protocols such as
 | 
						|
DCBX.
 | 
						|
 | 
						|
A new net_prio cgroup inherits the parent's configuration.
 |