Когда ядро пересылает данные на диск, могут ли эти данные впоследствии быть прочитаны процессом непосредственно из подкачки? или он должен быть полностью помещен обратно в физический барана (таким образом генерируя активность si so в vmstat)
У меня есть Java-процесс, который, кажется, имеет много данных в свопинге (https://paste.fedoraproject.org/542447/raw/) И когда я его выполняю, это очень медленно, но я не вижу такой активности.
После перезапуска процесса он снова становится очень быстрым, и теперь smaps показывает 0 байтов в Swap.
Информация о Vmstat: https://paste.fedoraproject.org/542453/raw/
Спасибо,
Процессы, включая java, не знают, где находится их память. Все, что знает Java, это попытка доступа к ячейке памяти 0x00234525. Когда ядро видит доступ, оно либо возвращает значение из ОЗУ, либо выгружает память из подкачки в ОЗУ и возвращает значение из ОЗУ. Прежде чем к ней можно будет получить доступ, страницу необходимо прочитать в ОЗУ.
Тем не менее, одна строка vmstat показывает, что среднее значение за все время безотказной работы не очень полезно. Бегать vmstat 5
пока процесс запущен, чтобы увидеть данные в реальном времени.