оборудование/ОС: Linux 4.9, 64G RAM.
Работает 16 демонов. Каждое чтение случайных коротких (100 байт) фрагментов файла размером 5 ГБ обращается к нему как к памяти, отображаемой через mmap() при запуске демона. Каждый демон читает свой собственный файл, всего 16 файлов по 5 ГБ.
Каждый демон делает примерно 10 операций чтения в секунду. Не слишком много, нагрузка на диск довольно маленькая.
Иногда (1 событие за 5 минут, без периода, совершенно случайно) какой-то случайный демон застрял в коде ядра со следующим стеком (см. рисунок) на 300 миллисекунд. Это не коррелирует с крупными неисправностями: крупные неисправности идут с постоянной скоростью около 100...200 в секунду. Чтение диска также постоянно.
Что может быть причиной этого?
Текст изображения: __list_del_entry isolate_lru_pages.isra.48 shrink_inactive_list shrink_node_memcg shrink_node node_reclaim get_page_from_freelist enqueue_task_fair sched_clock __alloc_pages_nodemask alloc_pages_vma handle_mm_fault __do_page_fault page_fault
/sys/kernel/mm/transparent_hugepage/defrag
не должна иметь значения, если только она не выбирает этот момент для дефрагментации анонимных страниц для другого процесса? Или, если это ошибка на анонимной странице, отдельно от используемых вами сопоставлений на основе файлов. - person Peter Cordes   schedule 16.10.2020madvise(MADV_RANDOM)
решил проблему. - person pavelkolodin   schedule 16.10.2020