Кто-нибудь знает значение результата "верхней" команды в Android?
Я обнаружил, что результат 'top' отличается от результата в стандартном linux. Я немного искал в Интернете, но не могу найти свой ответ. Например, следующее является частичным результатом top в моем Android:
PID CPU% S #THR VSS RSS PCY UID Name
814 2% R 1 940K 372K fg root top
110 1% S 58 185000K 59216K fg system system_server
31 0% S 1 0K 0K fg root vsync_workqueue
49 0% S 1 0K 0K fg root file-storage
52 0% S 1 0K 0K fg root gp2a_wq
178 0% S 9 98476K 23820K fg system com.android.systemui
Так что #THR, вероятно, количество потоков. Но что такое "PCY"? Я не могу найти эту информацию в папке /proc/(PID)/. И я обнаружил, что если я открою YouTube, PCY будет FG. Затем, если я выйду из него (youtube), процесс youtube все еще существует, но PCY будет bg. И с точки зрения 'S', я обнаружил, что все процессы всегда 'S', что означает сон, даже мое приложение на YouTube в настоящее время активно. Это устало...
У кого-нибудь есть подсказка:> Thx
4 ответа
Вот мои (не) образованные догадки:
PID - идентификатор процесса
CPU% - загрузка ЦП
S - состояние (или, возможно, статус) R= работает, S= спит
#THR - Количество потоков
PCY - я вроде как в тупике. Вы, кажется, достаточно хорошо понимаете, что он делает, так что этого достаточно (при условии, что fg и bg - единственно возможные значения)
UID - Имя пользователя, запустившего задачу
Имя - Это само за себя...
VSS и RSS: из http://groups.google.com/group/android-beginners/browse_thread/thread/e6f2d396a68238ad?pli=1
Размер виртуального набора (иногда сокращенно VSZ) и размер резидентного набора. Googling покажет некоторую подробную информацию для Linux. Вот скоростная версия:
VSS указывает, сколько виртуальной памяти связано с процессом, Resident Set Size указывает, сколько физических страниц связано с процессом.
VSS вообще бессмысленен на Android. Если я отображаю в памяти файл размером 1 МБ, VSS увеличивается на 1 МБ, но я не использовал никаких ресурсов (кроме записей в таблице виртуального отображения).
RSS частично бессмыслен на Android, потому что он не идентифицирует страницы, используемые несколькими процессами. Если процесс A имеет RSS 2 МБ, а процесс B имеет RSS 2 МБ, возможно, что заняты 4 МБ физических страниц. Также возможно, что занято всего 2 МБ физических страниц.
РЕДАКТИРОВАТЬ: Насколько ваш Youtube спит, если он ничего не делает активно, он будет спать, даже если он находится на переднем плане. Попробуйте создать простое приложение, которое в основном while(1){Делайте что-то бессмысленное} и посмотрите, спит ли оно или работает. Конечно, это может быть и причудой к тому, как Android обрабатывает многозадачность.
EDIT2:
Главным образом необразованный, несколько случайный удар в темноте для PCY -
PCY - Policy - определяет, как приложение должно обрабатываться диспетчером памяти Android.
FG - Foreground - Процесс считается процессом переднего плана и не должен быть уничтожен, чтобы освободить память
BG - Background - Процесс считается фоновым процессом (не активно запущен на переднем плане и может быть уничтожен для освобождения памяти)
Верхний исходный код [верхний исходный код] [1]
[1]: http://androidxref.com/4.0.4/xref/system/core/toolbox/top.c#442 чтобы получить полную логику расчета каждого значения
Пытаться man top
на любом обычном linux / unix (хотя я не думаю, что в Android установлен man по умолчанию).
На самом деле, теперь я смотрю, похоже, что названия этих столбцов не упоминаются на этом man
страница, но дело в том, что man
обычно это лучшее место для поиска информации о командах linux / unix.
На этой странице говорится, что означают VSS и RSS, но не указывается, как получить более значимые PSS и USS