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