А в памяти моей такая скрыта мощь...

Palych
Уже с Приветом
Posts: 13682
Joined: 16 Jan 2001 10:01

А в памяти моей такая скрыта мощь...

Post by Palych »

По моим многолетним (хоть и ограниченным) наблюдениям я практически никогда не видел чтобы при планировании, дизайне систем учитывался расход памяти.
Экономим время разработки, стоимость сопровождения, на худой конец CPU time, но не стоимость памяти.
Например: добавить "слой" веб сервисов, который принимают запросы от других сервисов и перебрасывают далее по инстанциям - нет проблем...
Или кэш: все что читаем из базы или иного внешнего ресурса - отбросим в кеш, авось пригодится. Или вообще - загрузим в память заранее (in memory storage...)
Martin Fowler говорил о cache invalidation, как одной из главных проблем CS.
А о том что насколько реально этот кеш помогает, какой процент записей читается из кеша - как-то редко думают...

Но я уже много лет живу под камнем, трендов не улавливаю.
Мне интересно как в современных системах с этим обстоит дела?
Особенно в облаках: сколько можно сэкономить "в масштабах страны" если хотя бы отчасти пытаться расходовать память не совсем безумно?
Есть ли сейчас тренд на экономию памяти?
tessob
Уже с Приветом
Posts: 549
Joined: 07 Jan 2016 13:04

Re: А в памяти моей такая скрыта мощь...

Post by tessob »

В подавляющем большинстве случаев выгоднее купить еще серверов, чем тратить бабло и время на оптимизацию. Опять же у большинства продуктов жизненный цикл довольно короткий.
OtherSide
Уже с Приветом
Posts: 15770
Joined: 01 Mar 2008 15:14

Re: А в памяти моей такая скрыта мощь...

Post by OtherSide »

В каких нибуть встроенных системах имеет смысл, а так память стоит копейки или ее все равно пользователь покупает, какой смысл?
Нужно понимать, что основная цель прогресса в IT = уменьшить стоимость разработки ПО
User avatar
Dmitry67
Уже с Приветом
Posts: 28294
Joined: 29 Aug 2000 09:01
Location: SPB --> Gloucester, MA, US --> SPB --> Paris

Re: А в памяти моей такая скрыта мощь...

Post by Dmitry67 »

Если вы в пещере на мейнфреме, то придется память экономить
Зарегистрированный нацпредатель, удостоверение N 19719876044787 от 22.09.2014
Palych
Уже с Приветом
Posts: 13682
Joined: 16 Jan 2001 10:01

Re: А в памяти моей такая скрыта мощь...

Post by Palych »

tessob wrote: 12 Feb 2018 09:36 В подавляющем большинстве случаев выгоднее купить еще серверов, чем тратить бабло и время на оптимизацию. Опять же у большинства продуктов жизненный цикл довольно короткий.
Кажется понятно...
User avatar
Flash-04
Уже с Приветом
Posts: 63430
Joined: 03 Nov 2004 05:31
Location: RU -> Toronto, ON

Re: А в памяти моей такая скрыта мощь...

Post by Flash-04 »

Учитывая что в современные сервера уже террабайты памяти можно ставить, думаю что не актуально.
Not everyone believes what I believe but my beliefs do not require them to.
Palych
Уже с Приветом
Posts: 13682
Joined: 16 Jan 2001 10:01

Re: А в памяти моей такая скрыта мощь...

Post by Palych »

И для облаков это не проблема?
Когда куча VM на одном сервере - разве память не становится более критичным ресурсом?
Например - участвует ли ли объём памяти в ценообразовании? Или только время работы?
User avatar
Flash-04
Уже с Приветом
Posts: 63430
Joined: 03 Nov 2004 05:31
Location: RU -> Toronto, ON

Re: А в памяти моей такая скрыта мощь...

Post by Flash-04 »

Становится. VM по разному стоят.
Not everyone believes what I believe but my beliefs do not require them to.
User avatar
mikeG
Уже с Приветом
Posts: 8485
Joined: 02 Aug 2003 01:32
Location: SPb->SFBA

Re: А в памяти моей такая скрыта мощь...

Post by mikeG »

В embedded приложениях всегда бюджет памяти специфицируется на все.
В облаках response time обычно важен, а сколько оно памяти там жрет в какой-то виртуалке - какая нафиг разница. Начнет падать - добавят памяти.
User avatar
Slonjra
Уже с Приветом
Posts: 6677
Joined: 02 Sep 2003 15:19
Location: Через речку от Манхэттена

Re: А в памяти моей такая скрыта мощь...

Post by Slonjra »

tessob wrote: 12 Feb 2018 09:36 В подавляющем большинстве случаев выгоднее купить еще серверов, чем тратить бабло и время на оптимизацию. Опять же у большинства продуктов жизненный цикл довольно короткий.
каждое утро начинаю с того, что прибиваю пару процессов Файрфокса, который умудряется в спящем режиме сожрать всю доступную память ))))))
и ведь куча лет этой софтине, а с памятью так и не научилась работать )))
Резюме — это список дел, которые ты больше никогда не хочешь делать.
Palych
Уже с Приветом
Posts: 13682
Joined: 16 Jan 2001 10:01

Re: А в памяти моей такая скрыта мощь...

Post by Palych »

В embedded приложениях всегда бюджет памяти специфицируется на все.
В облаках response time обычно важен, а сколько оно памяти там жрет в какой-то виртуалке - какая нафиг разница. Начнет падать - добавят памяти.
То есть - устойчивый консенсус в том, что память всегда можно взять из тумбочки, и добавить?
mskmel
Уже с Приветом
Posts: 946
Joined: 24 Sep 2013 05:58
Location: US\GA

Re: А в памяти моей такая скрыта мощь...

Post by mskmel »

Palych wrote: 13 Feb 2018 01:56То есть - устойчивый консенсус в том, что память всегда можно взять из тумбочки, и добавить?
Об этой проблеме устойчиво стараются не думать, прикрывая свою некомпетентность аргументами типа стоимости разработки.
User avatar
Dmitry67
Уже с Приветом
Posts: 28294
Joined: 29 Aug 2000 09:01
Location: SPB --> Gloucester, MA, US --> SPB --> Paris

Re: А в памяти моей такая скрыта мощь...

Post by Dmitry67 »

На самом деле чем больше память, тем важнее писать cache-friendly code

Например, производительность двух фрагментов кода ниже отличается в 20 раз примерно:

Code: Select all

int sum = 0;
for (int i=0; i<10000; i++)
  for (int j=0; j<10000; j++)
    sum += A[i,j];

Code: Select all

int sum = 0;
for (int i=0; i<10000; i++)
  for (int j=0; j<10000; j++)
    sum += A[j,i];
Зарегистрированный нацпредатель, удостоверение N 19719876044787 от 22.09.2014
User avatar
Helmsman
Уже с Приветом
Posts: 6449
Joined: 15 May 2003 00:04
Location: LA

Re: А в памяти моей такая скрыта мощь...

Post by Helmsman »

Palych wrote: 13 Feb 2018 01:56То есть - устойчивый консенсус в том, что память всегда можно взять из тумбочки, и добавить?
Мне ещё лет 20 назад делали большие глаза, когда я на интервью говорил о разумном использовании железа. Железо, мол, нынче дешёвое, легко добавить.
zVlad
Уже с Приветом
Posts: 15311
Joined: 30 Apr 2003 16:43

Re: А в памяти моей такая скрыта мощь...

Post by zVlad »

Dmitry67 wrote: 12 Feb 2018 11:28 Если вы в пещере на мейнфреме, то придется память экономить
Не экономить, а использовать разумно. Как впрочем и любой другой ресурс на МФ используются.
По части хранения данных БД в "кэшах" (buffer pools) DB2 представляет достаточно параметров чтобы понять насколько эффективно используется выделенная под них память. Кроме того, в зависимости от параметров, заданых в SLA, WLM совместно с DB2 способeн динамически изменять размер буферных пулов с тем чтобы обеспечить выполнение SLA.
zVlad
Уже с Приветом
Posts: 15311
Joined: 30 Apr 2003 16:43

Re: А в памяти моей такая скрыта мощь...

Post by zVlad »

В системах с виртуальной памятью и "интеллекктуальным" механизмом "кражи" страниц в реальной памяти (frames) происходит адаптивный процесс накопления используемых страниц в реальной памяти.
Так что забивать реальную память неиспользуемыми страницами данных вовсе не обязательно, и даже глупо.
User avatar
Dm.uk
Уже с Приветом
Posts: 5834
Joined: 12 Apr 2001 09:01
Location: нэподалеку от Ireland

Re: А в памяти моей такая скрыта мощь...

Post by Dm.uk »

mikeG wrote: 12 Feb 2018 20:58 В embedded приложениях всегда бюджет памяти специфицируется на все.
... скорее сперва "сколько жрет", ну а потом уже "сколько памяти" ;-)
Palych
Уже с Приветом
Posts: 13682
Joined: 16 Jan 2001 10:01

Re: А в памяти моей такая скрыта мощь...

Post by Palych »

zVlad wrote: 13 Feb 2018 15:12 В системах с виртуальной памятью и "интеллекктуальным" механизмом "кражи" страниц в реальной памяти (frames) происходит адаптивный процесс накопления используемых страниц в реальной памяти.
Так что забивать реальную память неиспользуемыми страницами данных вовсе не обязательно, и даже глупо.
(и когда уже на wintel виртуальную память сделают?... ;-) )
Засада в том, что приложения все данные которые читаются извне (даже с диска, который может иметь свой кеш, плюс кеш на уровне ОС) откладывают в кеш на уровне приложения (ассоциативный массив и проч.)
Таким образом для системы эта память вполне себе используемая, и отбросить её в долгий ящик невозможно.
OtherSide
Уже с Приветом
Posts: 15770
Joined: 01 Mar 2008 15:14

Re: А в памяти моей такая скрыта мощь...

Post by OtherSide »

Вы же слышали о том, что преждевременная оптимизация - зло? Так зачем экономить память пока ее все еще хватает?
Palych
Уже с Приветом
Posts: 13682
Joined: 16 Jan 2001 10:01

Re: А в памяти моей такая скрыта мощь...

Post by Palych »

OtherSide wrote: 13 Feb 2018 15:59 Вы же слышали о том, что преждевременная оптимизация - зло? Так зачем экономить память пока ее все еще хватает?
Вообще-то неэкономия памяти, бездумное кеширование - тоже результат преждевременной оптимизации: во многих(большинстве) случаях никто не смотрит насколько кеширование реально помогает.
Palych
Уже с Приветом
Posts: 13682
Joined: 16 Jan 2001 10:01

Re: А в памяти моей такая скрыта мощь...

Post by Palych »

oops
zVlad
Уже с Приветом
Posts: 15311
Joined: 30 Apr 2003 16:43

Re: А в памяти моей такая скрыта мощь...

Post by zVlad »

Palych wrote: 13 Feb 2018 15:30
zVlad wrote: 13 Feb 2018 15:12 В системах с виртуальной памятью и "интеллекктуальным" механизмом "кражи" страниц в реальной памяти (frames) происходит адаптивный процесс накопления используемых страниц в реальной памяти.
Так что забивать реальную память неиспользуемыми страницами данных вовсе не обязательно, и даже глупо.
(и когда уже на wintel виртуальную память сделают?... ;-) )
Засада в том, что приложения все данные которые читаются извне (даже с диска, который может иметь свой кеш, плюс кеш на уровне ОС) откладывают в кеш на уровне приложения (ассоциативный массив и проч.)
Таким образом для системы эта память вполне себе используемая, и отбросить её в долгий ящик невозможно.
Я не говорил что на wintel нет виртуальной памяти.....
mskmel
Уже с Приветом
Posts: 946
Joined: 24 Sep 2013 05:58
Location: US\GA

Re: А в памяти моей такая скрыта мощь...

Post by mskmel »

Palych wrote: 13 Feb 2018 16:18 Вообще-то неэкономия памяти, бездумное кеширование - тоже результат преждевременной оптимизации: во многих(большинстве) случаях никто не смотрит насколько кеширование реально помогает.
А также разные connection pools, service listeners, etc.
Palych
Уже с Приветом
Posts: 13682
Joined: 16 Jan 2001 10:01

Re: А в памяти моей такая скрыта мощь...

Post by Palych »

zVlad wrote: 13 Feb 2018 16:30
Palych wrote: 13 Feb 2018 15:30
zVlad wrote: 13 Feb 2018 15:12 В системах с виртуальной памятью и "интеллекктуальным" механизмом "кражи" страниц в реальной памяти (frames) происходит адаптивный процесс накопления используемых страниц в реальной памяти.
Так что забивать реальную память неиспользуемыми страницами данных вовсе не обязательно, и даже глупо.
(и когда уже на wintel виртуальную память сделают?... ;-) )
Засада в том, что приложения все данные которые читаются извне (даже с диска, который может иметь свой кеш, плюс кеш на уровне ОС) откладывают в кеш на уровне приложения (ассоциативный массив и проч.)
Таким образом для системы эта память вполне себе используемая, и отбросить её в долгий ящик невозможно.
Я не говорил что на wintel нет виртуальной памяти.....
Извиняюсь, не догнал.
То есть - если данные кешируются, но кеш не используется - эти данные в итоге упадут в своп?
Я не спец во внутреннем устройстве современных систем, типа JVM.
Но на основании простого житейского опыта предположу что даже теоретически никуда эти данные не выпадут.
Прошу поправить мои доводы тех кто в теме:
1. На уровне ОС память распределяется/свопится страницами. JVM управляет объектами, которые неизбежно раскидываются между страницами.
2. Объекты в JVM постоянно "дергаются" сборщиком мусора.
fleshold
Уже с Приветом
Posts: 143
Joined: 29 Apr 2014 12:22

Re: А в памяти моей такая скрыта мощь...

Post by fleshold »

Dmitry67 wrote: 13 Feb 2018 12:28 На самом деле чем больше память, тем важнее писать cache-friendly code

Например, производительность двух фрагментов кода ниже отличается в 20 раз примерно:

Code: Select all

int sum = 0;
for (int i=0; i<10000; i++)
  for (int j=0; j<10000; j++)
    sum += A[i,j];

Code: Select all

int sum = 0;
for (int i=0; i<10000; i++)
  for (int j=0; j<10000; j++)
    sum += A[j,i];
Ну точно не в 20, а наверное раза в полтора, ну может в 2. A[i,j]? Что за языг?

Return to “Вопросы и новости IT”