Skip to content

Commit 3aabae7

Browse files
author
Ingo Molnar
committed
Merge branch 'tip/perf/core' of git://git.kernel.org/pub/scm/linux/kernel/git/rostedt/linux-2.6-trace into perf/core
2 parents 79e406d + 57c072c commit 3aabae7

599 files changed

Lines changed: 6527 additions & 4395 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

Documentation/DocBook/device-drivers.tmpl

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,6 @@
4646

4747
<sect1><title>Atomic and pointer manipulation</title>
4848
!Iarch/x86/include/asm/atomic.h
49-
!Iarch/x86/include/asm/unaligned.h
5049
</sect1>
5150

5251
<sect1><title>Delaying, scheduling, and timer routines</title>

Documentation/DocBook/kernel-api.tmpl

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -57,7 +57,6 @@
5757
</para>
5858

5959
<sect1><title>String Conversions</title>
60-
!Ilib/vsprintf.c
6160
!Elib/vsprintf.c
6261
</sect1>
6362
<sect1><title>String Manipulation</title>

Documentation/DocBook/kernel-locking.tmpl

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1961,6 +1961,12 @@ machines due to caching.
19611961
</sect1>
19621962
</chapter>
19631963

1964+
<chapter id="apiref">
1965+
<title>Mutex API reference</title>
1966+
!Iinclude/linux/mutex.h
1967+
!Ekernel/mutex.c
1968+
</chapter>
1969+
19641970
<chapter id="references">
19651971
<title>Further reading</title>
19661972

Documentation/DocBook/tracepoint.tmpl

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -104,4 +104,9 @@
104104
<title>Block IO</title>
105105
!Iinclude/trace/events/block.h
106106
</chapter>
107+
108+
<chapter id="workqueue">
109+
<title>Workqueue</title>
110+
!Iinclude/trace/events/workqueue.h
111+
</chapter>
107112
</book>
Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,45 @@
1+
CFQ ioscheduler tunables
2+
========================
3+
4+
slice_idle
5+
----------
6+
This specifies how long CFQ should idle for next request on certain cfq queues
7+
(for sequential workloads) and service trees (for random workloads) before
8+
queue is expired and CFQ selects next queue to dispatch from.
9+
10+
By default slice_idle is a non-zero value. That means by default we idle on
11+
queues/service trees. This can be very helpful on highly seeky media like
12+
single spindle SATA/SAS disks where we can cut down on overall number of
13+
seeks and see improved throughput.
14+
15+
Setting slice_idle to 0 will remove all the idling on queues/service tree
16+
level and one should see an overall improved throughput on faster storage
17+
devices like multiple SATA/SAS disks in hardware RAID configuration. The down
18+
side is that isolation provided from WRITES also goes down and notion of
19+
IO priority becomes weaker.
20+
21+
So depending on storage and workload, it might be useful to set slice_idle=0.
22+
In general I think for SATA/SAS disks and software RAID of SATA/SAS disks
23+
keeping slice_idle enabled should be useful. For any configurations where
24+
there are multiple spindles behind single LUN (Host based hardware RAID
25+
controller or for storage arrays), setting slice_idle=0 might end up in better
26+
throughput and acceptable latencies.
27+
28+
CFQ IOPS Mode for group scheduling
29+
===================================
30+
Basic CFQ design is to provide priority based time slices. Higher priority
31+
process gets bigger time slice and lower priority process gets smaller time
32+
slice. Measuring time becomes harder if storage is fast and supports NCQ and
33+
it would be better to dispatch multiple requests from multiple cfq queues in
34+
request queue at a time. In such scenario, it is not possible to measure time
35+
consumed by single queue accurately.
36+
37+
What is possible though is to measure number of requests dispatched from a
38+
single queue and also allow dispatch from multiple cfq queue at the same time.
39+
This effectively becomes the fairness in terms of IOPS (IO operations per
40+
second).
41+
42+
If one sets slice_idle=0 and if storage supports NCQ, CFQ internally switches
43+
to IOPS mode and starts providing fairness in terms of number of requests
44+
dispatched. Note that this mode switching takes effect only for group
45+
scheduling. For non-cgroup users nothing should change.

Documentation/cgroups/blkio-controller.txt

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -217,6 +217,7 @@ Details of cgroup files
217217
CFQ sysfs tunable
218218
=================
219219
/sys/block/<disk>/queue/iosched/group_isolation
220+
-----------------------------------------------
220221

221222
If group_isolation=1, it provides stronger isolation between groups at the
222223
expense of throughput. By default group_isolation is 0. In general that
@@ -243,6 +244,33 @@ By default one should run with group_isolation=0. If that is not sufficient
243244
and one wants stronger isolation between groups, then set group_isolation=1
244245
but this will come at cost of reduced throughput.
245246

247+
/sys/block/<disk>/queue/iosched/slice_idle
248+
------------------------------------------
249+
On a faster hardware CFQ can be slow, especially with sequential workload.
250+
This happens because CFQ idles on a single queue and single queue might not
251+
drive deeper request queue depths to keep the storage busy. In such scenarios
252+
one can try setting slice_idle=0 and that would switch CFQ to IOPS
253+
(IO operations per second) mode on NCQ supporting hardware.
254+
255+
That means CFQ will not idle between cfq queues of a cfq group and hence be
256+
able to driver higher queue depth and achieve better throughput. That also
257+
means that cfq provides fairness among groups in terms of IOPS and not in
258+
terms of disk time.
259+
260+
/sys/block/<disk>/queue/iosched/group_idle
261+
------------------------------------------
262+
If one disables idling on individual cfq queues and cfq service trees by
263+
setting slice_idle=0, group_idle kicks in. That means CFQ will still idle
264+
on the group in an attempt to provide fairness among groups.
265+
266+
By default group_idle is same as slice_idle and does not do anything if
267+
slice_idle is enabled.
268+
269+
One can experience an overall throughput drop if you have created multiple
270+
groups and put applications in that group which are not driving enough
271+
IO to keep disk busy. In that case set group_idle=0, and CFQ will not idle
272+
on individual groups and throughput should improve.
273+
246274
What works
247275
==========
248276
- Currently only sync IO queues are support. All the buffered writes are

Documentation/gpio.txt

Lines changed: 14 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -109,17 +109,19 @@ use numbers 2000-2063 to identify GPIOs in a bank of I2C GPIO expanders.
109109

110110
If you want to initialize a structure with an invalid GPIO number, use
111111
some negative number (perhaps "-EINVAL"); that will never be valid. To
112-
test if a number could reference a GPIO, you may use this predicate:
112+
test if such number from such a structure could reference a GPIO, you
113+
may use this predicate:
113114

114115
int gpio_is_valid(int number);
115116

116117
A number that's not valid will be rejected by calls which may request
117118
or free GPIOs (see below). Other numbers may also be rejected; for
118-
example, a number might be valid but unused on a given board.
119-
120-
Whether a platform supports multiple GPIO controllers is currently a
121-
platform-specific implementation issue.
119+
example, a number might be valid but temporarily unused on a given board.
122120

121+
Whether a platform supports multiple GPIO controllers is a platform-specific
122+
implementation issue, as are whether that support can leave "holes" in the space
123+
of GPIO numbers, and whether new controllers can be added at runtime. Such issues
124+
can affect things including whether adjacent GPIO numbers are both valid.
123125

124126
Using GPIOs
125127
-----------
@@ -480,12 +482,16 @@ To support this framework, a platform's Kconfig will "select" either
480482
ARCH_REQUIRE_GPIOLIB or ARCH_WANT_OPTIONAL_GPIOLIB
481483
and arrange that its <asm/gpio.h> includes <asm-generic/gpio.h> and defines
482484
three functions: gpio_get_value(), gpio_set_value(), and gpio_cansleep().
483-
They may also want to provide a custom value for ARCH_NR_GPIOS.
484485

485-
ARCH_REQUIRE_GPIOLIB means that the gpio-lib code will always get compiled
486+
It may also provide a custom value for ARCH_NR_GPIOS, so that it better
487+
reflects the number of GPIOs in actual use on that platform, without
488+
wasting static table space. (It should count both built-in/SoC GPIOs and
489+
also ones on GPIO expanders.
490+
491+
ARCH_REQUIRE_GPIOLIB means that the gpiolib code will always get compiled
486492
into the kernel on that architecture.
487493

488-
ARCH_WANT_OPTIONAL_GPIOLIB means the gpio-lib code defaults to off and the user
494+
ARCH_WANT_OPTIONAL_GPIOLIB means the gpiolib code defaults to off and the user
489495
can enable it and build it into the kernel optionally.
490496

491497
If neither of these options are selected, the platform does not support

Documentation/kernel-doc-nano-HOWTO.txt

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -345,5 +345,10 @@ documentation, in <filename>, for the functions listed.
345345
section titled <section title> from <filename>.
346346
Spaces are allowed in <section title>; do not quote the <section title>.
347347

348+
!C<filename> is replaced by nothing, but makes the tools check that
349+
all DOC: sections and documented functions, symbols, etc. are used.
350+
This makes sense to use when you use !F/!P only and want to verify
351+
that all documentation is included.
352+
348353
Tim.
349354
*/ <twaugh@redhat.com>

Documentation/kernel-parameters.txt

Lines changed: 10 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1974,15 +1974,18 @@ and is between 256 and 4096 characters. It is defined in the file
19741974
force Enable ASPM even on devices that claim not to support it.
19751975
WARNING: Forcing ASPM on may cause system lockups.
19761976

1977+
pcie_ports= [PCIE] PCIe ports handling:
1978+
auto Ask the BIOS whether or not to use native PCIe services
1979+
associated with PCIe ports (PME, hot-plug, AER). Use
1980+
them only if that is allowed by the BIOS.
1981+
native Use native PCIe services associated with PCIe ports
1982+
unconditionally.
1983+
compat Treat PCIe ports as PCI-to-PCI bridges, disable the PCIe
1984+
ports driver.
1985+
19771986
pcie_pme= [PCIE,PM] Native PCIe PME signaling options:
1978-
Format: {auto|force}[,nomsi]
1979-
auto Use native PCIe PME signaling if the BIOS allows the
1980-
kernel to control PCIe config registers of root ports.
1981-
force Use native PCIe PME signaling even if the BIOS refuses
1982-
to allow the kernel to control the relevant PCIe config
1983-
registers.
19841987
nomsi Do not use MSI for native PCIe PME signaling (this makes
1985-
all PCIe root ports use INTx for everything).
1988+
all PCIe root ports use INTx for all services).
19861989

19871990
pcmv= [HW,PCMCIA] BadgePAD 4
19881991

Documentation/lguest/Makefile

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
# This creates the demonstration utility "lguest" which runs a Linux guest.
2-
CFLAGS:=-m32 -Wall -Wmissing-declarations -Wmissing-prototypes -O3 -I../../include -I../../arch/x86/include -U_FORTIFY_SOURCE
2+
# Missing headers? Add "-I../../include -I../../arch/x86/include"
3+
CFLAGS:=-m32 -Wall -Wmissing-declarations -Wmissing-prototypes -O3 -U_FORTIFY_SOURCE
34

45
all: lguest
56

0 commit comments

Comments
 (0)