0001 =======================
0002 Network priority cgroup
0003 =======================
0004
0005 The Network priority cgroup provides an interface to allow an administrator to
0006 dynamically set the priority of network traffic generated by various
0007 applications
0008
0009 Nominally, an application would set the priority of its traffic via the
0010 SO_PRIORITY socket option. This however, is not always possible because:
0011
0012 1) The application may not have been coded to set this value
0013 2) The priority of application traffic is often a site-specific administrative
0014 decision rather than an application defined one.
0015
0016 This cgroup allows an administrator to assign a process to a group which defines
0017 the priority of egress traffic on a given interface. Network priority groups can
0018 be created by first mounting the cgroup filesystem::
0019
0020 # mount -t cgroup -onet_prio none /sys/fs/cgroup/net_prio
0021
0022 With the above step, the initial group acting as the parent accounting group
0023 becomes visible at '/sys/fs/cgroup/net_prio'. This group includes all tasks in
0024 the system. '/sys/fs/cgroup/net_prio/tasks' lists the tasks in this cgroup.
0025
0026 Each net_prio cgroup contains two files that are subsystem specific
0027
0028 net_prio.prioidx
0029 This file is read-only, and is simply informative. It contains a unique
0030 integer value that the kernel uses as an internal representation of this
0031 cgroup.
0032
0033 net_prio.ifpriomap
0034 This file contains a map of the priorities assigned to traffic originating
0035 from processes in this group and egressing the system on various interfaces.
0036 It contains a list of tuples in the form <ifname priority>. Contents of this
0037 file can be modified by echoing a string into the file using the same tuple
0038 format. For example::
0039
0040 echo "eth0 5" > /sys/fs/cgroups/net_prio/iscsi/net_prio.ifpriomap
0041
0042 This command would force any traffic originating from processes belonging to the
0043 iscsi net_prio cgroup and egressing on interface eth0 to have the priority of
0044 said traffic set to the value 5. The parent accounting group also has a
0045 writeable 'net_prio.ifpriomap' file that can be used to set a system default
0046 priority.
0047
0048 Priorities are set immediately prior to queueing a frame to the device
0049 queueing discipline (qdisc) so priorities will be assigned prior to the hardware
0050 queue selection being made.
0051
0052 One usage for the net_prio cgroup is with mqprio qdisc allowing application
0053 traffic to be steered to hardware/driver based traffic classes. These mappings
0054 can then be managed by administrators or other networking protocols such as
0055 DCBX.
0056
0057 A new net_prio cgroup inherits the parent's configuration.