vmstat предоставляет счетчик cs для переключения контекста. Так как этот объясняет, что переключение контекста может происходить от одного процесса к другому, от ядра к пользователю или из-за срабатывания прерывания. Предоставляет ли cs все это? Если да, могу ли я получить индивидуальный вывод
Столбец Vmstat cs отображает, по крайней мере, в Solaris, добровольные переключения контекста, то есть те, которые происходят, когда процесс (поток на самом деле) освобождает ЦП, потому что он не имеет к нему никакого отношения, например, ожидает какого-то внешнего события, такого как ожидающий I / O закончить.
Если вы хотите отображать непроизвольные переключения контекста, вы можете использовать команду mpstat и посмотреть на ее столбец icsw. Здесь отображаются переключатели контекста из-за прерывания / вытеснения процесса, потому что для чего-то с более высоким приоритетом требуется ЦП.
Я думаю, это может зависеть от ОС. В AIX 6.1 у вас есть (http://publib.boulder.ibm.com/infocenter/aix/v6r1/index.jsp?topic=/com.ibm.aix.prftungd/doc/prftungd/vmstat_command.htm):
"(cs равно) Число переключений контекста в секунду, наблюдаемых в интервале. Физический ресурс ЦП разделен на логические временные интервалы по 10 миллисекунд каждый. Если поток запланирован для выполнения, он будет выполняться, пока не истечет его временной интервал, пока он вытесняется или пока он добровольно не откажется от управления ЦП. Когда другой поток получает управление ЦП, необходимо сохранить контекст или рабочую среду предыдущего потока и загрузить контекст текущего потока. Операционная система имеет очень эффективную процедуру переключения контекста, поэтому каждый коммутатор стоит недорого с точки зрения ресурсов.Любое значительное увеличение переключений контекста, например, когда cs намного выше, чем скорость дискового ввода-вывода и скорость сетевых пакетов, должно стать поводом для дальнейшего исследования . "
Если у вас есть исходники vmstat в вашей системе, вы можете заглянуть внутрь и попытаться выяснить, что он делает.
Для Linux в ядрах 2.6.23 и новее вы можете получить добровольные и непроизвольные переключения контекста, разбитые по процессам, с помощью команды
pidstat -w