История изменений
Исправление CrX, (текущая версия) :
Памяти много не бывает
Это выражение было актуально полтора-два десятка лет назад если мы всё еще говорим об обычных десктопах,а не каких-то узкоспециальных высоконагруженных серверах.
Оно точно актуально и сейчас. И мне кажется, что оно будет актуально всегда. Просто многие забывают, что т.н. «свободная» память тоже важна, а не только занятая программами. Это дисковый кэш.
Некоторые говорят, мол «мне на 8 ГБ норм, да и больше 6 никогда не используется. Это довольно странный тип рассуждений, потому что переводится он примерно так: «у меня под дисковый кэш всего 2 ГБ, поэтому при, например, раздаче больших торрентов происходит постоянное чтение одного и того же непосредственно с диска.
Ситуации, когда памяти под это «более чем достаточно», крайне редки. Это когда у тебя оперативной памяти больше, чем всех HDD/SSD вместе взятых. Вот в таком случае да, может быть совсем нечем заполнить, в том числе и закэшировав все файлы. Но это экзотика.
Вопроса два: Первый- если эти данные не используются то как они попали в RAM?
Например, это могут быть данные какой-то программы, к которым она по факту не обращается (но в любой момент может решить), но держит открытыми. Переписывание софта, чтобы сделать выгрузку таких данных из памяти принудительно, поскольку «не наш случай», не рассматриваем. Много чего можно было бы сделать лучше, но мы живём в реальном мире.
И второй - как заставить линукс принудительно их сбросить в своп?
Принудительно — никак. Но можно задать swappiness.
Сам-то он сделает это только когда памяти начнет не хватать(и то не сразу),что уже само по себе является нештатной ситуацией и признаком того что конфигурация компа была неправильно выбрана под задачу.
Это не так. Свап используется и когда памяти ещё полно. Именно когда есть в памяти такие данные, к которым никто по сути не обращается, но они «нужны». Лучше сбросить их на диск, а освободившуюся физическую раму использовать, опять же, под дисковый кэш — это эффективнее.
Вот это очень точное замечание:-)
А то :)
И это хорошо. Потому что альтернативой «тормозить» здесь является «поставить систему вообще колом».
Если велика вероятность такой ситуации то имеет смысл озаботиться настройкой квот на память для того юзера от которого запускается это что-то. Именно чтобы падало что-то,а не вставала раком вся система. Впрочем, при отсутствии свопа система вернет ошибку жручей программе при попытке запросить больше чем есть. И тут уже зависит от того как эта ошибка в программе обрабатывается. Надеюсь не так как я однажды видел в коде - цикл «просить пока не дадут» :)
Так-то всё верно. Но тем не менее, ситуации разные бывают. И уж особенно на десктопе. Свап — считай «бесплатный», плюс даёт и другие преимущества. А настраивать квоты под то, что запускает сам юзер, на десктопе часто один и тот же — это для многих скорее пустая трата времени — можно его потратить на что-то более приятное или полезное.
Избавляюсь от ситуации «система ушла в бесконечный своп и ни на что не реагирует».
Так как раз всё наоборот. Без свопа в такой ситуации как раз таки и будет «ни на что не реагирует», а при наличие оного будет наличие реакции, пусть и медленной.
Если не хватает RAM - или добавлять
Не все себе могут позволить терабайты RAM и, особенно, материнские платы/процессоры, которые столько поддерживают.
или скать баг из-за которого память течет.
Как искать его до первого запуска текущей программы?
Мне кажется, фундамент недопонимания здесь в том, что вы с чего-то решили, что речь идёт о том, что заполнение RAM и уход в swap — это типа нормальная ситуация, и swap именно что используется ради этого целенаправлено. А всё с точностью до наоборот. Нормальная ситуация такова, что swap используется всего на пару сотен мегабайт (при свободных десятков гигов рамы) — под выше описанное, а нужен он (в этом контексте, помимо прочего) на случай непредвиденного возникновения нештатной ситуации, когда какая-то программа внезапно взяла и потекла. Именно он позволит её относительно нормально прибить, а не ждать 5 минут, пока комп среагируется даже на банальное Alt+Ctrl+F2, и прибив — искать баг из-за которого память течёт.
То есть мысль-то верная в последнем абзаце. Только вот swap именно что помогает её нормально осуществить, а не мешает.
Исправление CrX, :
Памяти много не бывает
Это выражение было актуально полтора-два десятка лет назад если мы всё еще говорим об обычных десктопах,а не каких-то узкоспециальных высоконагруженных серверах.
Оно точно актуально и сейчас. И мне кажется, что оно будет актуально всегда. Просто многие забывают, что т.н. «свободная» память тоже важна, а не только занятая программами. Это дисковый кэш.
Некоторые говорят, мол «мне на 8 ГБ норм, да и больше 6 никогда не используется. Это довольно странный тип рассуждений, потому что переводится он примерно так: «у меня под дисковый кэш всего 2 ГБ, поэтому при, например, раздаче больших торрентов происходит постоянное чтение одного и того же непосредственно с диска.
Ситуации, когда памяти под это «более чем достаточно», крайне редки. Это когда у тебя оперативной памяти больше, чем всех HDD/SSD вместе взятых. Вот в таком случае да, может быть совсем нечем заполнить, в том числе и закэшировав все файлы. Но это экзотика.
Вопроса два: Первый- если эти данные не используются то как они попали в RAM?
Например, это могут быть данные какой-то программы, к которым она по факту не обращается (но в любой момент может решить), но держит открытыми. Переписывание софта, чтобы сделать выгрузку таких данных из памяти принудительно, поскольку «не наш случай», не рассматриваем. Много чего можно было бы сделать лучше, но мы живём в реальном мире.
И второй - как заставить линукс принудительно их сбросить в своп?
Принудительно — никак. Но можно задать swappiness.
Сам-то он сделает это только когда памяти начнет не хватать(и то не сразу),что уже само по себе является нештатной ситуацией и признаком того что конфигурация компа была неправильно выбрана под задачу.
Это не так. Свап используется и когда памяти ещё полно. Именно когда есть в памяти такие данные, к которым никто по сути не обращается, но они «нужны». Лучше сбросить их на диск, а освободившуюся физическую раму использовать, опять же, под дисковый кэш — это эффективнее.
Вот это очень точное замечание:-)
А то :)
И это хорошо. Потому что альтернативой «тормозить» здесь является «поставить систему вообще колом».
Если велика вероятность такой ситуации то имеет смысл озаботиться настройкой квот на память для того юзера от которого запускается это что-то. Именно чтобы падало что-то,а не вставала раком вся система. Впрочем, при отсутствии свопа система вернет ошибку жручей программе при попытке запросить больше чем есть. И тут уже зависит от того как эта ошибка в программе обрабатывается. Надеюсь не так как я однажды видел в коде - цикл «просить пока не дадут» :)
Так-то всё верно. Но тем не менее, ситуации разные бывают. И уж особенно на десктопе. Свап — считай «бесплатный», плюс даёт и другие преимущества. А настраивать квоты под то, что запускает сам юзер, на десктопе часто один и тот же — это для многих скорее пустая трата времени — можно его потратить на что-то более приятное или полезное.
Избавляюсь от ситуации «система ушла в бесконечный своп и ни на что не реагирует».
Так как раз всё наоборот. Без свопа в такой ситуации как раз таки и будет «ни на что не реагирует», а при наличие оного будет наличие реакции, пусть и медленной.
Если не хватает RAM - или добавлять
Не все себе могут позволить терабайты RAM и, особенно, материнские платы/процессоры, которые столько поддерживают.
или скать баг из-за которого память течет.
Как искать его до первого запуска текущей программы?
Мне кажется, фундамент недопонимания здесь в том, что вы с чего-то решили, что речь идёт о том, что заполнение RAM и уход в swap — это типа нормальная ситуация, и swap именно что используется ради этого целенаправлено. А всё с точностью до наоборот. Нормальная ситуация такова, что swap используется всего на пару сотен мегабайт (при свободных десятков гигов рамы) — под выше описанное, а нужен он (в этом контексте) на случай непредвиденного возникновения нештатной ситуации, когда какая-то программа внезапно взяла и потекла. Именно он позволит её относительно нормально прибить, а не ждать 5 минут, пока комп среагируется даже на банальное Alt+Ctrl+F2, и прибив — искать баг из-за которого память течёт.
То есть мысль-то верная в последнем абзаце. Только вот swap именно что помогает её нормально осуществить, а не мешает.
Исходная версия CrX, :
Памяти много не бывает
Это выражение было актуально полтора-два десятка лет назад если мы всё еще говорим об обычных десктопах,а не каких-то узкоспециальных высоконагруженных серверах.
Оно точно актуально и сейчас. И мне кажется, что оно будет актуально всегда. Просто многие забывают, что т.н. «свободная» память тоже важна, а не только занятая программами. Это дисковый кэш.
Некоторые говорят, мол «мне на 8 ГБ норм, да и больше 6 никогда не используется. Это довольно странный тип рассуждений, потому что переводится он примерно так: «у меня под дисковый кэш всего 2 ГБ, поэтому при, например, раздаче больших торрентов происходит постоянное чтение одного и того же непосредственно с диска.
Ситуации, когда памяти под это «более чем достаточно», крайне редки. Это когда у тебя оперативной памяти больше, чем всех HDD/SSD вместе взятых. Вот в таком случае да, может быть совсем нечем заполнить, в том числе и закэшировав все файлы. Но это экзотика.
Вопроса два: Первый- если эти данные не используются то как они попали в RAM?
Например, это могут быть данные какой-то программы, к которым она по факту не обращается (но в любой момент может решить), но держит открытыми. Переписывание софта, чтобы сделать выгрузку таких данных из памяти принудительно, поскольку «не наш случай», не рассматриваем. Много чего можно было бы сделать лучше, но мы живём в реальном мире.
И второй - как заставить линукс принудительно их сбросить в своп?
Принудительно — никак. Но можно задать swappiness.
Сам-то он сделает это только когда памяти начнет не хватать(и то не сразу),что уже само по себе является нештатной ситуацией и признаком того что конфигурация компа была неправильно выбрана под задачу.
Это не так. Свап используется и когда памяти ещё полно. Именно когда есть в памяти такие данные, к которым никто по сути не обращается, но они «нужны». Лучше сбросить их на диск, а освободившуюся физическую раму использовать, опять же, под дисковый кэш — это эффективнее.
Вот это очень точное замечание:-)
А то :)
И это хорошо. Потому что альтернативой «тормозить» здесь является «поставить систему вообще колом».
Если велика вероятность такой ситуации то имеет смысл озаботиться настройкой квот на память для того юзера от которого запускается это что-то. Именно чтобы падало что-то,а не вставала раком вся система. Впрочем, при отсутствии свопа система вернет ошибку жручей программе при попытке запросить больше чем есть. И тут уже зависит от того как эта ошибка в программе обрабатывается. Надеюсь не так как я однажды видел в коде - цикл «просить пока не дадут» :)
Так-то всё верно. Но тем не менее, ситуации разные бывают. И уж особенно на десктопе. Свап — считай «бесплатный», плюс даёт и другие преимущества. А настраивать квоты под то, что запускает сам юзер, на десктопе часто один и тот же — это для многих скорее пустая трата времени — можно его потратить на что-то более приятное или полезное.
Избавляюсь от ситуации «система ушла в бесконечный своп и ни на что не реагирует».
Так как раз всё наоборот. Без свопа в такой ситуации как раз таки и будет «ни на что не реагирует», а при наличие оного будет наличие реакции, пусть и медленной.
Если не хватает RAM - или добавлять
Не все себе могут позволить терабайты RAM и, особенно, материнские платы/процессоры, которые столько поддерживают.
или скать баг из-за которого память течет.
Как искать его до первого запуска текущей программы?
Мне кажется, фундамент недопонимания здесь в том, что вы с чего-то решили, что речь идёт о том, что заполнение RAM и уход в swap — это типа нормальная ситуация, и swap именно что используется ради этого целенаправлено. А всё с точностью до наоборот. Нормальная ситуация такова, что swap используется всего на пару сотен мегабайт (при свободных десятков гигов рамы) — под выше описанное, а нужен он на случай непредвиденного возникновения нештатной ситуации, когда какая-то программа внезапно взяла и потекла. Именно он позволит её относительно нормально прибить, а не ждать 5 минут, пока комп среагируется даже на банальное Alt+Ctrl+F2, и прибив — искать баг из-за которого память течёт.
То есть мысль-то верная в последнем абзаце. Только вот swap именно что помогает её нормально осуществить, а не мешает.