1Network priority cgroup 2------------------------- 3 4The Network priority cgroup provides an interface to allow an administrator to 5dynamically set the priority of network traffic generated by various 6applications 7 8Nominally, an application would set the priority of its traffic via the 9SO_PRIORITY socket option. This however, is not always possible because: 10 111) The application may not have been coded to set this value 122) The priority of application traffic is often a site-specific administrative 13 decision rather than an application defined one. 14 15This cgroup allows an administrator to assign a process to a group which defines 16the priority of egress traffic on a given interface. Network priority groups can 17be created by first mounting the cgroup filesystem. 18 19# mount -t cgroup -onet_prio none /sys/fs/cgroup/net_prio 20 21With the above step, the initial group acting as the parent accounting group 22becomes visible at '/sys/fs/cgroup/net_prio'. This group includes all tasks in 23the system. '/sys/fs/cgroup/net_prio/tasks' lists the tasks in this cgroup. 24 25Each net_prio cgroup contains two files that are subsystem specific 26 27net_prio.prioidx 28This file is read-only, and is simply informative. It contains a unique integer 29value that the kernel uses as an internal representation of this cgroup. 30 31net_prio.ifpriomap 32This file contains a map of the priorities assigned to traffic originating from 33processes in this group and egressing the system on various interfaces. It 34contains a list of tuples in the form <ifname priority>. Contents of this file 35can be modified by echoing a string into the file using the same tuple format. 36for example: 37 38echo "eth0 5" > /sys/fs/cgroups/net_prio/iscsi/net_prio.ifpriomap 39 40This command would force any traffic originating from processes belonging to the 41iscsi net_prio cgroup and egressing on interface eth0 to have the priority of 42said traffic set to the value 5. The parent accounting group also has a 43writeable 'net_prio.ifpriomap' file that can be used to set a system default 44priority. 45 46Priorities are set immediately prior to queueing a frame to the device 47queueing discipline (qdisc) so priorities will be assigned prior to the hardware 48queue selection being made. 49 50One usage for the net_prio cgroup is with mqprio qdisc allowing application 51traffic to be steered to hardware/driver based traffic classes. These mappings 52can then be managed by administrators or other networking protocols such as 53DCBX. 54 55A new net_prio cgroup inherits the parent's configuration. 56