почему моя программа использует системное время процессора?

Я написал трудоемкую программу на Python. По сути, программа на python проводит большую часть своего времени в подпрограмме на фортране, обернутой f2py, а подпрограмма на фортране большую часть своего времени проводит в lapack. Однако, когда я запустил эту программу на своей рабочей станции, я обнаружил, что 80% времени процессора приходится на время пользователя, а 20% времени процессора приходится на системное время.

В другом вопросе SO я прочитал:

Разница заключается в том, тратится ли время в пространстве пользователя или в пространстве ядра. Пользовательское процессорное время — это время, затрачиваемое процессором на выполнение кода вашей программы (или кода в библиотеках); системное процессорное время — это время, затрачиваемое на выполнение кода в ядре операционной системы от имени вашей программы.

Поэтому, если это правда, я предполагаю, что все время процессора должно быть посвящено пользовательскому времени. Означает ли 20% процентов системного времени, что мне нужно профилировать программу?

ИЗМЕНИТЬ:

Дополнительная информация: я не могу воспроизвести 20% системного процессорного времени. В другом прогоне команда time дает:

  • реальный 5м14.804с
  • пользователь 78m6.233s
  • система 4m53.896s

person Chong Wang    schedule 14.03.2016    source источник
comment
Можете ли вы указать фактическое время, проведенное в пространстве пользователя/ядра для некоторых запусков? Хотя проценты полезны, они действительно имеют больше смысла только для длинных циклов, когда время запуска незначительно.   -  person innoSPG    schedule 14.03.2016
comment
Пожалуйста, покажите свой код.   -  person Alexander Vogt    schedule 14.03.2016
comment
@AlexanderVogt, какая часть программы тебе нужна? Часть питона, часть фортрана? Код слишком длинный, чтобы вставить его сюда.   -  person Chong Wang    schedule 15.03.2016


Ответы (1)


Операционные системы постоянно переключают то, что работает в любой момент. Ваша программа будет работать какое-то время, но в конце концов произойдет прерывание, и система переключится на что-то другое, или она может просто решить запустить что-то еще на секунду или две, а затем переключиться обратно. Трудно заставить операционную систему не вести себя подобным образом. Это часть работы ОС; поддерживать движение во всех областях.

person DMAC    schedule 15.03.2016