Back to home page

OSCL-LXR

 
 

    


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.