1
0
mirror of git://sourceware.org/git/lvm2.git synced 2024-12-21 13:34:40 +03:00
lvm2/libdm
Bryn M. Reeves 2d1dbb9edd libdm: fix performance of failed filemap cleanup
While cleaning up the table of already created regions during a
failed dm_stats_create_regions_from_fd(), list the handle once,
and call _stats_delete_region() directly. This avoids sending a
@stats_list message for each region deleted, reducing runtime
from 6s to 0.7s when cleaning up ~250 out of ~10000 regions:

  # time dmstats create --filemap b.img
  device-mapper: message ioctl on (253:0) failed: Cannot allocate memory
  Failed to create region 246 of 309 at 9388032.
  Could not create regions from file /root/b.img
  << pauses here >>
  Command failed

  real	0m6.267s
  user	0m3.770s
  sys	0m2.487s

  # time dmstats create --filemap b.img
  device-mapper: message ioctl on (253:0) failed: Cannot allocate memory
  Failed to create region 246 of 309 at 9388032.
  Could not create regions from file /root/b.img
  Command failed

  real	0m0.716s
  user	0m0.034s
  sys	0m0.581s

Testing the error path requires region creation to start to
fail part way through the operation (in order to have regions
to clean up): the simplest way is to ensure the system is
close to the kernel limit of 1/4 RAM or 1/2 vmalloc space
consumed by dmstats data.
2016-12-10 11:59:16 +00:00
..
datastruct libdm: fix mask leak in dm_bitset_parse_list 2016-07-06 08:59:09 +01:00
ioctl libdm: Show lib vsn even if driver vsn unavailable. 2016-05-12 01:14:25 +01:00
misc libdm: use dm_log_with_errno always 2016-11-03 17:49:07 +01:00
mm gcc: cleanup some sign warnings 2016-02-23 12:25:25 +01:00
regex cleanup: hide gcc warning 2016-11-23 17:55:03 +01:00
.exported_symbols libdm: Use wrappers for all malloc functions. 2015-07-22 23:11:48 +01:00
.exported_symbols.Base hash: change name of new lookup function 2015-11-17 11:59:44 -06:00
.exported_symbols.DM_1_02_97 libdm: new dm_task_get_info with internal_suspend 2015-05-15 16:48:22 +02:00
.exported_symbols.DM_1_02_98 libdm: Add dm_task_get_errno to return ioctl errno. 2015-05-26 15:13:49 +01:00
.exported_symbols.DM_1_02_99 libdm: add dm_tree_node_set_thin_pool_read_only 2015-06-18 15:15:39 +02:00
.exported_symbols.DM_1_02_100 config: add support for config value formatting flags 2015-06-24 11:13:37 +02:00
.exported_symbols.DM_1_02_101 report: add infrastructure to recognize fuzzy reserved names and returning dynamic reserved values 2015-07-03 10:47:09 +02:00
.exported_symbols.DM_1_02_103 libdm: Use wrappers for all malloc functions. 2015-07-22 23:11:48 +01:00
.exported_symbols.DM_1_02_104 libdm: Drop ignored duplicate export designation. 2015-08-26 17:30:36 +01:00
.exported_symbols.DM_1_02_105 pre-release 2015-08-17 17:20:14 +01:00
.exported_symbols.DM_1_02_106 libdm: add per region precise timestamps property methods 2015-08-24 20:03:21 +01:00
.exported_symbols.DM_1_02_107 libdm: add latency histogram support 2015-09-02 20:48:59 +01:00
.exported_symbols.DM_1_02_110 libdm: dm_tree_node_size_changed recognizes reduction 2015-10-25 21:05:15 +01:00
.exported_symbols.DM_1_02_113 libdm: introduce dm_get_status_mirror 2015-12-01 13:00:43 +01:00
.exported_symbols.DM_1_02_124 libdm: Add dm_udev_wait_immediate. 2016-04-28 00:54:27 +01:00
.exported_symbols.DM_1_02_128 libdm: report: add dm_report_set_selection 2016-06-20 11:33:43 +02:00
.exported_symbols.DM_1_02_129 libdm: add stats group and region iterators and properties 2016-07-05 19:53:16 +01:00
.exported_symbols.DM_1_02_131 libdm: add dm_stats_create_regions_from_fd() 2016-07-08 14:34:41 +01:00
.exported_symbols.DM_1_02_133 libdm: report: add dm_report_group_output_and_pop_all 2016-08-09 18:24:45 +02:00
.exported_symbols.DM_1_02_135 libdm: add dm_config_parse_without_dup_node_check 2016-09-21 18:15:18 +02:00
libdevmapper.h libdm: fix performance of failed filemap cleanup 2016-12-10 11:59:16 +00:00
libdevmapper.pc.in libdm: pkgconfig: fix devmapper.pc to not reference nonexistent rt.pc file 2015-09-03 09:28:42 +02:00
libdm-common.c libdm: use dm_log_with_errno always 2016-11-03 17:49:07 +01:00
libdm-common.h doc: change fsf address 2016-01-21 12:11:37 +01:00
libdm-config.c libdm: add dm_config_parse_without_dup_node_check 2016-09-21 18:15:18 +02:00
libdm-deptree.c libdm: cleaner debug message 2016-09-13 09:24:38 +02:00
libdm-file.c libdm: do not issue 'Failed to create directory' message for failure in dm_create_dir 2016-06-29 15:58:18 +02:00
libdm-report.c libdm: check for mem when _canonicalize_field_ids 2016-10-03 17:46:26 +02:00
libdm-stats.c libdm: fix performance of failed filemap cleanup 2016-12-10 11:59:16 +00:00
libdm-string.c doc: change fsf address 2016-01-21 12:11:37 +01:00
libdm-targets.c libdm: cache status reports passthrough cache mode 2016-05-19 18:26:07 +02:00
libdm-timestamp.c doc: change fsf address 2016-01-21 12:11:37 +01:00
Makefile.in doc: change fsf address 2016-01-21 12:11:37 +01:00