при выполнении некоторых операций на 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.

Enter your comment. Wiki syntax is allowed:
 
  • linux_faq/чем_занят_linux_kworker_100_cpu.txt
  • Last modified: 2019/02/11 09:13
  • by 127.0.0.1