← Назад к вопросам

В чём разница между WSS и RSS памятью?

1.0 Junior🔥 141 комментариев
#Клиент-серверная архитектура

Комментарии (1)

🐱
deepseek-v3.2PrepBro AI5 апр. 2026 г.(ред.)

Ответ сгенерирован нейросетью и может содержать ошибки

Разница между WSS и RSS: ключевые метрики использования памяти

WSS (Working Set Size) и RSS (Resident Set Size) — это две принципиально разные метрики, используемые для анализа потребления памяти процессом в Unix-подобных системах (Linux, macOS) и Windows. Хотя обе касаются памяти, они отвечают на разные вопросы.

WSS (Working Set Size) — Активная рабочая память

WSS — это объем памяти, к которому процесс фактически обращался за определённый промежуток времени и который ему критически необходим для работы здесь и сейчас. Это "горячие" данные.

  • Определение: Подмножество виртуальной памяти процесса, активно используемое в текущем временном окне (например, за последние несколько секунд).
  • Аналогия: Это книги, лежащие у вас на столе, с которыми вы работаете в данный момент. Остальные книги (остальная выделенная память) стоят на полке, они вам не мешают, и вы к ним не прикасаетесь.
  • Что измеряет: Потребность процесса в физической памяти (RAM) для эффективной работы без частых page faults (обращений к диску).
  • Ключевая особенность: WSS часто меньше RSS и тем более меньше выделенной виртуальной памяти. WSS динамически меняется в зависимости от фазы работы приложения.
  • Как используется: WSS — критически важный показатель для настройки системы управления памятью (ОС может выгружать из RAM страницы, не входящие в текущий WSS) и для оценки реальных требований приложения к RAM.
  • Как измерить сложно: Не выводится стандартными утилитами напрямую. Требует использования профилировщиков (например, perf в Linux) или анализа счётчиков page faults.

RSS (Resident Set Size) — Резидентная память

RSS — это объем физической памяти (RAM), который в данный момент занят страницами процесса. Это всё, что находится в оперативной памяти, включая как активные данные, так и кэши, буферы и даже неиспользуемые, но не выгруженные страницы.

  • Определение: Совокупность всех страниц процесса, находящихся в физической RAM в данный конкретный момент времени.
  • Аналогия: Это все книги, которые вы взяли из библиотеки и которые сейчас физически находятся в вашей комнате (на столе, на стуле, на полу). Даже если вы их не читаете.
  • Что измеряет: Текущее давление процесса на физическую память системы.
  • Ключевая особенность: RSS может быть больше WSS, так как включает в себя "холодные" данные, которые ещё не были вытеснены из RAM. RSS легко измерить.
  • Как используется: Основная метрика в мониторинге (например, в top, htop, ps). Показывает, сколько реальной RAM "съедает" процесс.
  • Как измерить: Легко получить стандартными командами:
    # В Linux:
    ps -o pid,rss,comm -p <PID>
    # Или в top/htop в колонке RES
    

Сравнительная таблица

КритерийWSS (Working Set Size)RSS (Resident Set Size)
СутьАктивно используемые ("горячие") страницыВсе страницы в физической RAM
ИзмеряетПотребность в RAM для работыТекущее занятие RAM
ДинамикаСильно меняется в зависимости от активностиБолее статична, меняется при аллокации/освобождении
РазмерОбычно меньше RSSОбычно больше или равен WSS
ПроисхождениеКонцепция из теории ОС, показатель производительностиПрактическая метрика из статуса процесса
Простота измеренияСложно, требует профилированияПросто, стандартными утилитами (top, ps)

Практический пример и выводы

Представьте сервер приложения, который выделил буфер на 1 ГБ (RSS может показать ~1 ГБ), но обрабатывает запросы, активно работая только с 100 МБ данных в секунду. Его WSS будет около 100 МБ, а RSS — около 1 ГБ.

  • Если RSS велик, а WSS мал, это часто указывает на неэффективное использование памяти: утечки памяти, неоптимальные аллокаторы или просто избыточные предварительные выделения (pre-allocation). Система может безболезненно выгрузить часть страниц на диск.
  • Если WSS приближается к RSS или превышает доступную RAM, это сигнал о нехватке памяти (memory pressure), ведущей к свопингу и серьёзным потерям производительности.

Для QA-инженера понимание этой разницы критически важно:

  1. При анализе производительности: Рост RSS без роста WSS может не быть проблемой. А вот рост WSS — прямой индикатор увеличения реального потребления памяти.
  2. При нагрузочном тестировании: Нужно мониторить не только RSS (чтобы не исчерпать RAM), но и оценивать WSS (например, через количество major page faults) для понимания реальных требований приложения.
  3. При поиске утечек памяти: Инструменты часто показывают RSS. Однако стабильный рост RSS при циклической нагрузке (когда WSS должен возвращаться к исходному значению) — классический признак утечки.

Таким образом, RSS отвечает на вопрос "сколько памяти процесс занимает в RAM сейчас?", а WSS — на вопрос "сколько памяти ему действительно нужно для работы без тормозов?". Обе метрики важны для комплексного анализа использования памяти.