Я запускаю многопоточное приложение, написанное на C ++, на компьютере с ОС Cent-OS. Вывод команды «top» показывает, что приложение потребляет большую часть ЦП и работает как системный ЦП (не пользовательский ЦП). Затем я подумал о запуске команды «perf top», она показывает:
76.02% [kernal] [k] _spin_lock
1.87% libc-2.12.so [.] _init_free
1.55% [kernal] [k] futex_wake
1.48% libc-2.12.so [.] _init_malloc
1.37% libc-2.12.so [.] malloc
0.77% [kernal] [k] __audit_syscall_exit
0.76% libc-2.12.so [.] __lll_lock_wait_private
0.59% libc-2.12.so [.] free
Я не уверен, почему он ест этот высокий системный процессор. Приложение отлично работает на других машинах Linux с ОС Ubuntu, мне кажется, что оно связано с CentOS.
Приложение написано на C ++, во времена высокой загрузки системного процессора было около 250 активных потоков.
Приложения делают много вызовов malloc / free.
Операционная система: Linux-2.6.32-358.18.1.el6.x86_64-x86_64-with-centos-6.4-Final
версия libc: 2.12
Нет ядер в машине: 16
Задача ещё не решена.