LINUX.ORG.RU

Про оптимизацию по RAM

 ,


0

2

Как думаете, может хватит оптимизировать вообще?

Например, контринтуитивная оптимизация: на любой тип при изначальной разметке RAM можно выделять в 2 раза больше памяти, чем ему реально нужно. В результате можно заюзать вторую часть памяти на кучу вещей: строки и массивы в эту память могут расти, и такой рост будет очень дешев. При изменении значений полей в объектах, можно не изменять сами поля, а делать полную копию объекта в эту свободную память с изменением этого одного поля (что само по себе контринтуитивно, но работает). То есть мы с чистой совестью размениваем RAM на скорость (даже не только на CPU, а в общем на скорость)

А если что и тормозит, то это или файлуха, или кластерная база данных на другом конце где у вас в облаке документы все хранятся, или упаси бох кластерная файлуха, или ужасное поделие NFS (Network File System)

И если всё равно фиг догадаешься, какая оптимизация реально оптимизирует, а какая «тормозит», то может просто забить на всё это? Писать как пишется, горя не знать. Всё подряд просто в RAM кэшируем и ОК

Тем более что оперативки сейчас всё равно гигабайтами, Skylake X даже на самых жестких тестах выше 65 градусов не греется.

★★★☆☆

Тем более что оперативки сейчас всё равно гигабайтами

Гигабайты-гигабайтами, а на массовых ноутбуках всё равно 4ГБ стоит. Да и на серверах она далеко не бесконечная.

Deleted ()
Ответ на: комментарий от Deleted

ну на серверах-то вообще всё приятно. Можно всё толкнуть в какой-нибудь Hazelcast или Apache Ignite (которые можно лехкто растянуть на кластер вплоть до 2000 серверов), чем разгрузить локальную RAM от необходимости быть хранилищем данных). А рантайм программы, ну сколько он там сожрет? Если запросы к БД правильные, там может быть, 4GB ноутбука хватит =)

stevejobs ★★★☆☆ ()
Ответ на: комментарий от stevejobs

Можно всё толкнуть в какой-нибудь Hazelcast или Apache Ignite

и умереть в лагах NUMA. збс.

upcFrost ★★★★★ ()
Ответ на: комментарий от upcFrost

стойстой, но ведь это ты сам разложил данные в памяти, ты знаешь на каких она серверах и какой структуры, поэтому можешь умно их запросить. Т.е. чтобы твой запрос совпадал с физической структурой расположения данных, обращался только к правильному сегменту (в данном случае - к правильынм серверам и кэшам внутри них), и так далее. Не?

stevejobs ★★★☆☆ ()

Внатуре. Есть же уже платы, в которые можно 128 гигов впихнуть, а с русским изобретением энергонезависимой памяти скоро вся система там будет и винт будет нужен только для чтения/записи файлов пользователя.

Sociopsih ★☆ ()
Последнее исправление: Sociopsih (всего исправлений: 1)
Ответ на: комментарий от stevejobs

стойстой, но ведь это ты сам разложил данные в памяти, ты знаешь на каких она серверах и какой структуры, поэтому можешь умно их запросить

юзеру это расскажи. понимаешь какая шняга - кривой алгоритм сожрет всю память сколько дашь, и все равно в malloc'ах утонет. или ты думаешь в жабке malloc'а нет?

upcFrost ★★★★★ ()

Стиви, радуйся что ты далеко - треснул бы тебя стулом по голове и заставил бы тебя сначала раскуривать все с самых физических принципов, а потом пересадил бы на ассемблер - писать продакшн на 8086, до самого обретения просветления.

Ты такую техноересь предложил что даже слаанешиты в страхе убежали. А они, между прочим, сделали ноду!

StReLoK ☆☆ ()
Последнее исправление: StReLoK (всего исправлений: 1)

на любой тип при изначальной разметке RAM можно выделять в 2 раза больше памяти

Нечто подобное давно уже во всю применяется для типов которые могут расширяться в памяти - всякие там списки, хеш-таблицы\словари и прочее. По крайней мере примерно так оно работает в средах вроде джавы или дотнете.

А зачем для других типов выделять память с запасом ? Особенно для типов, для которых потребление памяти заранее определено ?

DawnCaster ()

Держать всё в памяти может и имеет смысл при HDD, но если SSD, то оптимизация по RAM внезапно позволяет запустить всякого софта побольше одновременно.

Valeg ★★★ ()
Ответ на: комментарий от StReLoK

Мне показалось, что он предложил обычный оверкоммит (кажется не тот термин), который и так уже применяется везде где это имеет смысл. Нет?

Midael ★★★★★ ()
Последнее исправление: Midael (всего исправлений: 1)
Ответ на: комментарий от Midael

Он предложил без особого смысла раздуть все до охренительных размеров. Профита с этого будет мало (и то не везде), зато жор памяти взлетит в разы. Впрочем я не сильно удивлюсь если и веб макаки начнут применять такой подход - занимать памяти больше чем надо на самом деле в несколько раз (даже если использована будет только её часть, причем с гарантией).

StReLoK ☆☆ ()
Ответ на: комментарий от Midael

ну я вот сижу смотрю, как у нас джависты отчаянно байтики считают, как бы лишний байтик не потратить. А потом запускаешь тесты, и на реальных машинах, все это байтоебство заканчивается обычно только тормозами.

и вот терзает меня совесть. Ну да, с одной стороны, приложуха начала весить со старта не 1Gb в RAM, а 300 мегабайт. Но на эти триста мегабайт были ухлопаны полгода, а могли бы в это время что-нибудь полезное запилить... И код теперь весь в костылях и копипасте из библиотек..

stevejobs ★★★☆☆ ()
Последнее исправление: stevejobs (всего исправлений: 1)
Ответ на: комментарий от stevejobs

Байтолюбство на языках с реализацией рантайма в VM это как плакать над убежавшим молоком.

После прочтения всего заглавного поста можно предложить только уйти из профессии, такое мышление уже ничем не исправить и оно принесёт только вред самому и окружающим.

Bfgeshka ★★★★★ ()
Ответ на: комментарий от StReLoK

о да, детка, горение! :)

теперь следи за руками: практически где угодно можно написать такой код, и никто тебя не побьет. У ревьюеров просто не будет достаточно информации, чтобы понять, что происходит (особенно если нет финального аудита, а только выборочное чтение кусочков на геррите).

где теперь твой бог? Ты хочешь побить меня, но не знаешь, кого именно бить!

stevejobs ★★★☆☆ ()
Ответ на: комментарий от stevejobs

Но зачем так делать? Это охренительно неоптимальные затраты на получение мизерного профита. Мало того что на жабе, которая просто уже стала божеством в мире производителей памяти, так ещё и специально раздувать код - за такое надо на грушу садить, не меньше (хотя с маководами это не работает).

Ты хочешь побить меня, но не знаешь, кого именно бить!

А зачем мне знать? I have a cyclonic torpedo. I have a planet. Oh! EXTERMINATUS!

StReLoK ☆☆ ()
Ответ на: комментарий от StReLoK

ну вот давай начнем с малого. В Эрланге нет переменных вообще. Хочешь поменять что-то - создавай новую переменную. Очевидно что существует момент, перед проходом GC Эрланга, когда память как минимум задвоена. И тем не менее, этот язык придумали заюзали при царе горохе, когда с памятью всё было очень плохо. Не находишь ли ты тут какие-то неувязки со своей позицией? :)

stevejobs ★★★☆☆ ()
Ответ на: комментарий от stevejobs

Могу только предположить, что если они этим занимаются, значит есть потребность, это как-то экономически обосновано что-ли, и никуда не деться. А если нет, то проблема уже скорее не техническая.

В остальном мне не очень понятен посыл. Пост начинается с идей для борьбы с количеством аллокаций: ну там коллекции памяти дать навырост, арены, пулы объектов - все это как бы не ново и применяется, а заканчивается предложением просто купить больше памяти.

Midael ★★★★★ ()
Последнее исправление: Midael (всего исправлений: 2)
Ответ на: комментарий от stevejobs

Ну начнем с того что эрланг придумали уже нифига не при горохе, а несколько позже, да пользовать его начали вообще в середине 90-х, когда памяти уже хватало. Во вторых за каким хреном была сделана неизменяемость никто особо и не понял. Ну и в третьих он так и не взлетел для широкого применения.

А при царе горохе придумали фортран и кобол. А там байтики вообще на вес золота были, так что их дрочили как могли.

StReLoK ☆☆ ()
Ответ на: комментарий от stevejobs

ведь это ты сам разложил данные в памяти

Кто-то давным-давно все выдумал, сложил все в ящик, провертел в крышке дыру и ушел… Ушел спать… Тогда что? Приходит отец Кабани, закрывает глаза, с-сует руку в дыру. — Отец Кабани посмотрел на свою руку. — Х-хвать! Выдумал! Я, говорит, это вот самое и выдумывал!.. А кто не верит, тот дурак…

abraziv_whiskey ★★★★★ ()
Ответ на: комментарий от abraziv_whiskey

> ведь это ты сам разложил данные в памяти
Кто-то давным-давно все выдумал, сложил все в ящик, провертел в крышке дыру и ушел… Ушел спать… Тогда что? Приходит отец Кабани, закрывает глаза, с-сует руку в дыру. — Отец Кабани посмотрел на свою руку. — Х-хвать! Выдумал! Я, говорит, это вот самое и выдумывал!.. А кто не верит, тот дурак…

В моём понимании примерно так мыслит напильник.

BruteForce ★★★ ()
Ответ на: комментарий от BruteForce

Да так мыслит любой разраб, которого лид не пинает ногами в череп. Ты такой красиво все выдумал, а он взял и запихал все в один жаваскрипт размером с Луну.

abraziv_whiskey ★★★★★ ()

Java головного мозга.

Вот IDEA отжирает кучу ОЗУ и всё равно тормозит.

RazrFalcon ★★★★★ ()
Ответ на: комментарий от StReLoK

я не сильно удивлюсь если и веб макаки начнут применять такой подход - занимать памяти больше чем надо

Успокойся и вернись в палату. Никто твою память не занимает, скриптовые языки вообще ничего не знают ни про память ни про потоки.

uin ★★ ()

Cache is the new RAM. Если в раме сидит что-то большое и сильно нелинейное, оно будет тормозить.

PolarFox ★★★★★ ()

При изменении значений полей в объектах, можно не изменять сами поля, а делать полную копию объекта в эту свободную память с изменением этого одного поля

Я наверное не потребляю нужных веществ чтобы это понять.

Объясните суть профита? Что у нас улучшается? Скорость обработки объекта? Освобождается памяти больше?!

Что именно улучшает это «нововведение»?

Serg_HIS ()

Про оптимизацию по RAM

von Neumann bottleneck -> Intel -> concurrency -> Carl Hewitt -> fail
нечего оптимизировать то, что сломано by disign
в прошлом твоём треде я писал про плот, который все усилено чинят, чтобы он не потонул.
поздравляю, ты принёс новых заплаток — прибей вон там.
www.linux.org.ru/search.jsp?q=Bret Victor&range=ALL&interval=ALL&...

system-root ★★★ ()
Последнее исправление: system-root (всего исправлений: 1)

И если всё равно фиг догадаешься, какая оптимизация реально оптимизирует, а какая «тормозит»,


ну...планировать/проектировать пробовал?

darkenshvein ★★★★★ ()
Ответ на: комментарий от stevejobs

ну на серверах-то вообще всё приятно.

мэээ, у меня гениальная идея. А давайте переносить обработку веба с клиента на сервер!?

darkenshvein ★★★★★ ()
Закрыто добавление комментариев для недавно зарегистрированных пользователей (со score < 50)