linux/drivers/of
Andrei Vagin d1be35cb6f proc: add seq_put_decimal_ull_width to speed up /proc/pid/smaps
seq_put_decimal_ull_w(m, str, val, width) prints a decimal number with a
specified minimal field width.

It is equivalent of seq_printf(m, "%s%*d", str, width, val), but it
works much faster.

== test_smaps.py
  num = 0
  with open("/proc/1/smaps") as f:
          for x in xrange(10000):
                  data = f.read()
                  f.seek(0, 0)
==

== Before patch ==
  $ time python test_smaps.py
  real    0m4.593s
  user    0m0.398s
  sys     0m4.158s

== After patch ==
  $ time python test_smaps.py
  real    0m3.828s
  user    0m0.413s
  sys     0m3.408s

$ perf -g record python test_smaps.py
== Before patch ==
-   79.01%     3.36%  python   [kernel.kallsyms]    [k] show_smap.isra.33
   - 75.65% show_smap.isra.33
      + 48.85% seq_printf
      + 15.75% __walk_page_range
      + 9.70% show_map_vma.isra.23
        0.61% seq_puts

== After patch ==
-   75.51%     4.62%  python   [kernel.kallsyms]    [k] show_smap.isra.33
   - 70.88% show_smap.isra.33
      + 24.82% seq_put_decimal_ull_w
      + 19.78% __walk_page_range
      + 12.74% seq_printf
      + 11.08% show_map_vma.isra.23
      + 1.68% seq_puts

[akpm@linux-foundation.org: fix drivers/of/unittest.c build]
Link: http://lkml.kernel.org/r/20180212074931.7227-1-avagin@openvz.org
Signed-off-by: Andrei Vagin <avagin@openvz.org>
Cc: Alexey Dobriyan <adobriyan@gmail.com>
Cc: KAMEZAWA Hiroyuki <kamezawa.hiroyu@jp.fujitsu.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
2018-04-11 10:28:33 -07:00
..
unittest-data Move duplicating and unflattening of an overlay flattened devicetree 2018-03-05 13:29:46 -06:00
address.c of: Add missing I/O range exception for indirect-IO devices 2018-04-04 08:42:47 -05:00
base.c of: cache phandle nodes to reduce cost of of_find_node_by_phandle() 2018-03-07 14:50:09 -06:00
device.c of: Use SPDX license tag for DT files 2018-01-08 08:22:45 -06:00
dynamic.c of: overlay: do not include path in full_name of added nodes 2018-03-05 15:38:34 -06:00
fdt_address.c of: Use SPDX license tag for DT files 2018-01-08 08:22:45 -06:00
fdt.c of/fdt: use memblock_virt_alloc for early alloc 2018-01-08 08:24:34 -06:00
irq.c of: Use SPDX license tag for DT files 2018-01-08 08:22:45 -06:00
Kconfig of: change overlay apply input data from unflattened to FDT 2018-03-04 00:29:24 -08:00
kobj.c of: Use SPDX license tag for DT files 2018-01-08 08:22:45 -06:00
Makefile PCI: Move OF-related PCI functions into PCI core 2018-01-17 17:36:39 -06:00
of_mdio.c Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net 2018-01-11 22:13:42 -05:00
of_net.c of_net: Implement of_get_nvmem_mac_address helper 2018-03-30 10:40:18 -04:00
of_numa.c of: Use SPDX license tag for DT files 2018-01-08 08:22:45 -06:00
of_private.h of: cache phandle nodes to reduce cost of of_find_node_by_phandle() 2018-03-07 14:50:09 -06:00
of_reserved_mem.c of: Use SPDX license tag for DT files 2018-01-08 08:22:45 -06:00
overlay.c of: overlay: Fix forgotten reference to of_overlay_apply() 2018-03-17 18:18:38 -05:00
pdt.c of: Use SPDX license tag for DT files 2018-01-08 08:22:45 -06:00
platform.c ARM: SoC driver updates for 4.16 2018-02-01 16:35:31 -08:00
property.c device property: Constify device_get_match_data() 2018-02-12 10:41:11 +01:00
resolver.c of: cache phandle nodes to reduce cost of of_find_node_by_phandle() 2018-03-07 14:50:09 -06:00
unittest.c proc: add seq_put_decimal_ull_width to speed up /proc/pid/smaps 2018-04-11 10:28:33 -07:00