при выполнении некоторых операций на btrfs - в частности btrfs replace я наблюдаю картину, когда по iotop никакого активного ввода-вывода нет, но процесс kworker потребляет 100% CPU.
Посмотреть что же именно он там делает можно с помощью perf:
sudo apt-get install linux-tools-common
Проверяем - работает ли perf:
sudo perf
Возможно, потребуется поставить второй пакет с названием типа linux-tools-3.11.0-15-generic, который должен соответствовать текущей версии ядра.
В моем случае, в системе было два файлика /usr/bin/perf и /usr/bin/perf_4.9. Нормально работал /usr/bin/perf_4.9.
Собираем статистику в течение 10 секунд:
sudo perf_4.9 record -g -a sleep 10
После завершения сбора данных смотрим что собралось:
sudo perf_4.9 report
В выводе оказалось такое:
+ 91.07% 0.00% kworker/u8:5 [kernel.kallsyms] [k] find_parent_nodes + 91.07% 0.00% kworker/u8:5 [kernel.kallsyms] [k] iterate_extent_inodes + 91.07% 0.00% kworker/u8:5 [kernel.kallsyms] [k] iterate_inodes_from_logical + 91.07% 0.00% kworker/u8:5 [kernel.kallsyms] [k] copy_nocow_pages_worker + 91.07% 0.00% kworker/u8:5 [kernel.kallsyms] [k] normal_work_helper + 91.07% 0.00% kworker/u8:5 [kernel.kallsyms] [k] btrfs_scrubnc_helper + 91.07% 0.00% kworker/u8:5 [kernel.kallsyms] [k] process_one_work + 91.07% 0.00% kworker/u8:5 [kernel.kallsyms] [k] worker_thread + 91.07% 0.00% kworker/u8:5 [kernel.kallsyms] [k] kthread + 91.07% 0.00% kworker/u8:5 [kernel.kallsyms] [k] ret_from_fork + 89.62% 10.83% kworker/u8:5 [kernel.kallsyms] [k] resolve_indirect_refs + 27.38% 22.13% kworker/u8:5 [kernel.kallsyms] [k] btrfs_get_token_64 + 22.32% 22.13% kworker/u8:5 [kernel.kallsyms] [k] read_extent_buffer + 21.20% 0.17% kworker/u8:5 [kernel.kallsyms] [k] btrfs_next_old_leaf + 13.97% 0.32% kworker/u8:5 [kernel.kallsyms] [k] btrfs_search_old_slot + 10.42% 6.12% kworker/u8:5 [kernel.kallsyms] [k] btrfs_get_token_32 + 8.86% 8.83% kworker/u8:5 [kernel.kallsyms] [k] map_private_extent_buffer + 6.93% 0.12% kworker/u8:5 [kernel.kallsyms] [k] read_block_for_search.isra.31 + 5.36% 0.93% kworker/u8:5 [kernel.kallsyms] [k] find_extent_buffer + 2.94% 2.91% kworker/u8:5 [kernel.kallsyms] [k] copy_page + 2.77% 0.01% kworker/u8:5 [kernel.kallsyms] [k] radix_tree_lookup + 2.76% 2.74% kworker/u8:5 [kernel.kallsyms] [k] __radix_tree_lookup + 2.45% 0.52% kworker/u8:5 [kernel.kallsyms] [k] __tree_mod_log_rewind
Судя по всем процесс занят работой с экстентами btrfs.
Discussion