123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354 |
- 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.
|