Зачем тогда себя ограничивать, сразу генерим вырвиглазную картинку в прогрессивном жыпеге с максимальной компрессией, размером с почтовую марку и в разрешении 320 на 200. С растровым шрифтом 8 на 16 пикселей.
Все видели комбик со списком шрифтов, многие там пытались набирать названия — и оно действительно подсказывает и авто-дополняет. Но никто об этом не помнит :-)
(смотрит на минус у комментария) по ходу я кого-то сдал как стеклотару, рассказав про парад троллей :-)
Скрытый текст
На самом деле, каждый может что-то не знать. Это нормально. Не вижу в этом трагедии или повода для грусти. Пока мы готовы учиться и расти над собой — все прекрасно.
Юмор, сатира, троллинг (в меру) — это тоже прекрасно. Я бывает что подрабатываю адвокатом дьявола, увы — небезгрешен… тут главное — вовремя остановиться :-)
Фактически, многие в комментах действуют так — берем пивасик, садимся на диван, врубаем телек — и начинается любимая забава «кто виноват, что делать, и как нам реорганизовать рабкрин» (С).
Уж не знаю с чем связано, непохоже, что «место проклятое». Парад троллинга, не иначе…
Вот в деле памяти — показываю, как 32 гигабайта волшебно помещаются в 10, и вместо двух планок по 32 (ибо чуть-чуть в 2 по 16 не влезает) — в лабазе берем только две по 8. Прямая экономия в кармане каждого в стольник баков только на комплектуху, погромисты в разы быстрее лепят нетленку, чистый win-win.
И что?
Погромисты плохие, надо было как в начале компьютерной эры — устраивать битвы программ за биты ферритовых колец :-) Причем этот прямой намек — то ли не помнят…
И неважно, что при таком подходе, от которого отказались полвека назад, у такого юзера будет максимум — пакман в псевдографике с кассеты, вместо тысяч тайтлов ААА в стиме. С дивана так видно.
Умные люди написали килотонну научных работ, все это отработали-отладили, на столе каждого — результат полувека работы computer science.
На стандартном (несколько)терабайтном диске найти x2 к оперативе, чтобы не приходил мой любимый OOM-killer — нее, вы что! Как переключить коробку передач в «драйв», только хардкор — коняку впрячь и потом жаловаться, что карета ужас ужасный, плохо тянет :-)
И этот трэш нам рассказывают — наши коллеги…
Вот реально, смешнее было только в фидо (привет «голому деду», кто помнит) :-)
Так кубы-докеры пользуются хостом, им-то зачем своп кэшировать :-)
оомкиллер тащат из ядра в юзерспейс, а то больно лютый
Он не лютый, он ограниченный… а вытащить его в юзерспейс — и можно и статистику набирать и профили использования. В ядро такое тащить — это несколько сложновато…
Эта штука называется UVMM. Память — вся (кроме стеков, но это детали реализации) — это кэши аж двух видов.
Первая сущность — это page cache. Эта штука в принципе неотключаемая никак и никогда и есть всегда, даже если особо хитрый юзер «отключил своп ваще». Отключить он может только backing store для анонимных страниц, и то это весьма странное действие. Называется это page i/o.
А вторая сущность — это file cache. Или дисковые буферы, это одно и то же. Это вот и есть кэширование доступа к файлам через file i/o.
Есть конечно и кэш трансляции как у трансметы, есть буфера DMA, есть реально память, которая никак не отображается на кэши (non-paged) — но все эти чудеса доступны только драйверам.
На прикладном уровне — оперативной памяти не существует. Есть только виртуальная, и она ограничена только возможностями ее адресации, но не ограничена микросхемами.
Задачей же ядра — является поддержка обоих кэшей в состоянии «оно боле-мене работает», так сказать — попытка найти динамический баланс между дисковым буфером и кэшем страниц.
Этой концепции уже очень много лет, и последняя система где это не выполнялось — была MS DOS.
Поясним на примере
$ ps -ef -o vsz | awk 'BEGIN{a=0;}{ a=a+$1;}END{print a;}'
32630252
$ free
total used free shared buff/cache available
Mem:16204412 10516208 983740 911412 3704464 4431788
Что мы тут видим? Физически ОЗУ занимает 16ГБ. Из них занято 10.5ГБ. Но все одновременно запущенные процессы занимают… 32ГБ.
Как 32ГБ могут поместиться в 10.5ГБ? При этом еще 2ГБ вообще ничем не используются, а еще 3.7ГБ — занял файловый кэш. Это что за мега-упаковщик такой?
Так наверное остальное-то в своп уехало! Проверяем
Swap: 48027640 4095404 43932236
А вот и нет. Всего 4ГБ.
Складываем в столбик — своп, кэши, свободное место… 20.3ГБ! А где еще 12ГБ? Это же не погрешность — программы используют памяти почти на 40% больше чем у нас физически есть.
Вот это и есть ответ — если делать в лоб, как при царе Горохе, то памяти нам понадобится в разы больше. И работать это тоже будет в разы медленнее.
Пример — как у нас запускается программа? Да элементарно — файл на диске отображается в память и попадает в кэш страниц…
Ага, вот мы и нашли, куда пропали наши гигабайты. Они на диске лежат, в бинарях и библиотеках. Причем в кэш едут только используемые страницы, а не все целиком, так что тут двойная экономия.
А вы говорите — память неэффективно используется… :-) Это надо еще поискать — что более эффективно используется, хех.
… но при этом оная «упущенная выгода» — та еще химера (в отличие от реальных убытков).
Во многих случаях — это просто влажные мечтания, как у RIAA (все пираты должны по 50уе за трек, ведь если бы не было этого вашего интернета — все бы купили!).
(смеется) так ведь НТР — это не то что кому-то персонально нравится или нет. Это как вода — результаты затекают во все щели. Где-то крутит турбину, а где-то водяными пистолетиками обливаются.
Так ведь по итогу кто-то мокрый — это не потому что НТР и давайте накажем изобретателя водяных пистолетиков… и вообще вода была только в тазиках.
… которой нет с 2006 года, осталась только софтовая эмуляция?
Подсказываю, культовая видеокарта S3 Trio64 была выпущена в 1991 году, и умела аппаратный StretchBlt на on-screen context. А топовые видеокарты, выпускаемые с 2004 года — нет.
А затем подтянулась и операционка — и отключила поддержку у тех карт, что еще поддерживали аппаратное ускорение GDI.
Можно с таким же успехом писать напрямую в видеопамять, как в MS DOS, вообще быстро будет, NTVDM все еще жив, хех.
Увы, но нет, эти трюки умерли.
с Windows 7 ведь аппаратную акселерацию GDI вернули
Это не вернули (да и куда возвращать? аппаратно-то нет), это хитрый трюк по surface sharing. Эмулятор GDI может (но не обязан) пользоваться DirectDraw от DX10+.
Нужен для поддержки эмулятором того самого ClearType.
Несмотря ни на что, несмотря на дырявые абстракции и совершенно дикие сложности во всех возможных и невозможных местах, мы уже вышли на стадию, когда без электроники и софта жить не получается.
Посмотрите на это с другой стороны — прогресс не останавливается, он растет такими темпами, что вчера условную задачу вынужден был решать огромный коллектив докторов наук (что по факту означало — не решаем вообще), а сегодня ее решают три студента в перерывах между учебой и кафешками.
Сколько там народу было в инстаграме, когда они стали единорогами, около 20ти?
Еще каких-то полвека (уже чуть больше) назад рынок ЭВМ оценивался в 100 штук по всему миру, и умели они решать целых две задачи (моделирование взрывов и расчет зарплаты).
А теперь ежегодно только смартфоны производятся миллиардами. И на каждый из них — можно поставить что душе угодно из миллионов разных программ.
Чего грустить, что мы слегка проспонсировали НТР, купив еще немножечко кремниевых пластинок?
Вы правда думаете, что динамически отрендерить картинку в фоне на основе текстовых данных чата, и вывести это на экран — это сколь-нибудь заметно глазу сейчас?
А layout()-инг он побольше, потормознее, и содержит в себе массу не очень очевидных шагов. Его задача — рассчитать, где какую букву рисовать, с учетом шрифтов, эффектов, состояний и т. д. И желательно чтобы это не вылилось в пересчет всего document.
Добавьте платформозависимые гитики типа поверхностей DirectDraw или OpenGL текстур. Добавьте процессы и IPC между ними. Вспомните про pango, cairo, X server pixmaps, XRender и MIT-SHM…
Браузеры — штука сложная.
И знаете что смешно? На современном оборудовании рисование в онскрин контексты будет медленнее, чем весь этот адов бутерброд из стеков, енжайнов, и прочего.
Просто потому, что начиная еще с Windows Vista старые трюки по акселерации GDI+ аппаратно прекратили поддерживать. Не сразу, постепенно, но время идет — и в известном смысле старые трюки на новом железе работают во много раз медленнее, чем на старом.
представьте, что вместо этих кэшей — скайп при смене абонента заново скачивает, layout-ит и рендерит историю чата. Удобно ли будет?
Вы хотите сказать, что он держит в оперативке всю историю чатов?
А все что вы видите в чате — оно по вашему где? У вас в памяти. Если не поленитесь поскроллить «назад в прошлое» — будете видеть моменты подгрузки истории чата за «уже убранный из кэша» период. Заодно и сможете оценить — нужно ли вам постоянно такое слайд-шоу, хех, или кэш за последних пару дней — оно вполне решение…
(Здесь должен быть вопрос про два процента вашего дохода)
Планку памяти я один раз куплю, а не раз в две недели, так что это не расходы, а инвестиция, и вопрос доходов нерелевантен :-)
(ехидно) так в фотошоп надо равчик загрузить, а то внезапно выяснится, что 53 мегабайта занимает только фон, меню, и пара открытых палитр. И более того, вполне будет резонен вопрос — это как пара пустых окошек столько выжрала? Даже если серый фон основного окна — это фотография стола главного разработчика, куда ушло 50 мегабайт?
И вдруг выяснится, что это вполне сравнимо со скайпом, в котором поди полсотни активных чатов с фоточками открыто, хех.
Но куда они все жрут-то?!
Тут в общем-то секрета нет — первое на что уходит ОЗУ так это на разные double/triple buffers, caches, и прочие чудеса размена тормозов на память. Просто для того, чтобы не тратить ресурс процессора на бессмысленно одинаковые действия.
Вот на секундочку представьте, что вместо этих кэшей — скайп при смене абонента заново скачивает, layout-ит и рендерит историю чата. Удобно ли будет? А так он просто говорит готовой картинке BitBlt.
А еще можно считать в процентах. От 16ГБ ОЗУ ваши «почти четыреста мегабайт» — это 2%. Вот реально, 2% — это катастрофично важно?
Если хотите — это и было началом заката «теплого лампового» скайпа. Я до последнего к слову пользовался сначала 2.2, а потом 4.3…
И да, спасибо за напоминание, действительно — скайп начали ломать еще до покупки, все верно. Я поленился за датами в википедию заглянуть, а зря, как оказалось :-)
А я например предпочитал скайп версии 2.2, и 6я версия — это покрашенный картонный новодел :-)
появились групповые видеоконференции
… именно потому, что к этому моменту микрософт старый скайп полностью переписали. С нуля. И он уже больше не был пир-ту-пир. Внезапно так. И веб версию выкатили.
Более того, я очень хорошо помню процесс запуска этой самой «версии с видеочатами». Именно в это время вся сеть скайпа легла, из 45 млн активных пиров в сети осталось примерно 9 млн, и те линуксовые :-)
Он стабилен, он быстр, он не имеет критических глюков
Шестерка? Да ладно, по сравнению с второй версией — ужас на крыльях ночи, не умеющий даже в нотификации (вот радость — при приходе сообщения всплывает весь скайп целиком вместо нужного чата, да ладно! как это может быть удобно?)
В каком смысле «ползал по диску»?
Не всем по скайпу присылают аж три файла в месяц :-) Мне диалог с прогрессом скачанных файлов (помните такой?) приходилось чистить регулярно, потому что быстро «зарастал» принятыми файлами и нещадно тормозил.
Скажите, вот серьезно, зачем? Что вам даст thumbnail файла, который вам прислали?
Да потому что огромная куча этих «файлов» — картинки, в виде например скриншотов. «У мея еработает». И гораздо удобнее их увидеть сразу в уменьшенном виде, чем ползать «просмотрщиком факсов» в общей свалке…
И вот он должен работать идеально.
У вас параллельная вселенная, хех. Скайп никогда не работал идеально, он всегда был альтернативно-вычурный.
Ну вот например, пишешь ты абоненту текст. Оно делает вид что отправилось. А потом, через пару дней(!!!) появляется рядом с текстом желтый треугольник — «нишмагла». Офигеть идеально работало…
Пользователь оценит ретро-стиль, а если кусок кода ему понравится — перепечатает с картинки в блокнот. © вредные советы :-)
На самом деле, каждый может что-то не знать. Это нормально. Не вижу в этом трагедии или повода для грусти. Пока мы готовы учиться и расти над собой — все прекрасно.
Юмор, сатира, троллинг (в меру) — это тоже прекрасно. Я бывает что подрабатываю адвокатом дьявола, увы — небезгрешен… тут главное — вовремя остановиться :-)
Фактически, многие в комментах действуют так — берем пивасик, садимся на диван, врубаем телек — и начинается любимая забава «кто виноват, что делать, и как нам реорганизовать рабкрин» (С).
Уж не знаю с чем связано, непохоже, что «место проклятое». Парад троллинга, не иначе…
Вот в деле памяти — показываю, как 32 гигабайта волшебно помещаются в 10, и вместо двух планок по 32 (ибо чуть-чуть в 2 по 16 не влезает) — в лабазе берем только две по 8. Прямая экономия в кармане каждого в стольник баков только на комплектуху, погромисты в разы быстрее лепят нетленку, чистый win-win.
И что?
Погромисты плохие, надо было как в начале компьютерной эры — устраивать битвы программ за биты ферритовых колец :-) Причем этот прямой намек — то ли не помнят…
И неважно, что при таком подходе, от которого отказались полвека назад, у такого юзера будет максимум — пакман в псевдографике с кассеты, вместо тысяч тайтлов ААА в стиме. С дивана так видно.
Умные люди написали килотонну научных работ, все это отработали-отладили, на столе каждого — результат полувека работы computer science.
На стандартном (несколько)терабайтном диске найти x2 к оперативе, чтобы не приходил мой любимый OOM-killer — нее, вы что! Как переключить коробку передач в «драйв», только хардкор — коняку впрячь и потом жаловаться, что карета ужас ужасный, плохо тянет :-)
И этот трэш нам рассказывают — наши коллеги…
Вот реально, смешнее было только в фидо (привет «голому деду», кто помнит) :-)
Так кубы-докеры пользуются хостом, им-то зачем своп кэшировать :-)
Он не лютый, он ограниченный… а вытащить его в юзерспейс — и можно и статистику набирать и профили использования. В ядро такое тащить — это несколько сложновато…
И это прекрасно, у нас есть общий механизм на всех. А не каждая программа — воюет с соседями за ресурсы (ферритовые войны, ау!)
Нашего теплого лампового киллера сильно демонизируют :-) обеспечьте своп x2 к оперативке, и он к вам не придет практически никогда…
Эта штука называется UVMM. Память — вся (кроме стеков, но это детали реализации) — это кэши аж двух видов.
Первая сущность — это page cache. Эта штука в принципе неотключаемая никак и никогда и есть всегда, даже если особо хитрый юзер «отключил своп ваще». Отключить он может только backing store для анонимных страниц, и то это весьма странное действие. Называется это page i/o.
А вторая сущность — это file cache. Или дисковые буферы, это одно и то же. Это вот и есть кэширование доступа к файлам через file i/o.
Есть конечно и кэш трансляции как у трансметы, есть буфера DMA, есть реально память, которая никак не отображается на кэши (non-paged) — но все эти чудеса доступны только драйверам.
На прикладном уровне — оперативной памяти не существует. Есть только виртуальная, и она ограничена только возможностями ее адресации, но не ограничена микросхемами.
Задачей же ядра — является поддержка обоих кэшей в состоянии «оно боле-мене работает», так сказать — попытка найти динамический баланс между дисковым буфером и кэшем страниц.
Этой концепции уже очень много лет, и последняя система где это не выполнялось — была MS DOS.
Поясним на примере
Что мы тут видим? Физически ОЗУ занимает 16ГБ. Из них занято 10.5ГБ. Но все одновременно запущенные процессы занимают… 32ГБ.
Как 32ГБ могут поместиться в 10.5ГБ? При этом еще 2ГБ вообще ничем не используются, а еще 3.7ГБ — занял файловый кэш. Это что за мега-упаковщик такой?
Так наверное остальное-то в своп уехало! Проверяем
А вот и нет. Всего 4ГБ.
Складываем в столбик — своп, кэши, свободное место… 20.3ГБ! А где еще 12ГБ? Это же не погрешность — программы используют памяти почти на 40% больше чем у нас физически есть.
Вот это и есть ответ — если делать в лоб, как при царе Горохе, то памяти нам понадобится в разы больше. И работать это тоже будет в разы медленнее.
Пример — как у нас запускается программа? Да элементарно — файл на диске отображается в память и попадает в кэш страниц…
Ага, вот мы и нашли, куда пропали наши гигабайты. Они на диске лежат, в бинарях и библиотеках. Причем в кэш едут только используемые страницы, а не все целиком, так что тут двойная экономия.
А вы говорите — память неэффективно используется… :-) Это надо еще поискать — что более эффективно используется, хех.
Хоть у какого-нибудь SCAR / Hero и нету 4K матрицы, но зато она сама по себе — больше.
… но при этом оная «упущенная выгода» — та еще химера (в отличие от реальных убытков).
Во многих случаях — это просто влажные мечтания, как у RIAA (все пираты должны по 50уе за трек, ведь если бы не было этого вашего интернета — все бы купили!).
И ничего, живем как-то :-)
Так ведь по итогу кто-то мокрый — это не потому что НТР и давайте накажем изобретателя водяных пистолетиков… и вообще вода была только в тазиках.
… которой нет с 2006 года, осталась только софтовая эмуляция?
Подсказываю, культовая видеокарта S3 Trio64 была выпущена в 1991 году, и умела аппаратный StretchBlt на on-screen context. А топовые видеокарты, выпускаемые с 2004 года — нет.
А затем подтянулась и операционка — и отключила поддержку у тех карт, что еще поддерживали аппаратное ускорение GDI.
Можно с таким же успехом писать напрямую в видеопамять, как в MS DOS, вообще быстро будет, NTVDM все еще жив, хех.
Увы, но нет, эти трюки умерли.
Это не вернули (да и куда возвращать? аппаратно-то нет), это хитрый трюк по surface sharing. Эмулятор GDI может (но не обязан) пользоваться DirectDraw от DX10+.
Нужен для поддержки эмулятором того самого ClearType.
Несмотря ни на что, несмотря на дырявые абстракции и совершенно дикие сложности во всех возможных и невозможных местах, мы уже вышли на стадию, когда без электроники и софта жить не получается.
Посмотрите на это с другой стороны — прогресс не останавливается, он растет такими темпами, что вчера условную задачу вынужден был решать огромный коллектив докторов наук (что по факту означало — не решаем вообще), а сегодня ее решают три студента в перерывах между учебой и кафешками.
Сколько там народу было в инстаграме, когда они стали единорогами, около 20ти?
Еще каких-то полвека (уже чуть больше) назад рынок ЭВМ оценивался в 100 штук по всему миру, и умели они решать целых две задачи (моделирование взрывов и расчет зарплаты).
А теперь ежегодно только смартфоны производятся миллиардами. И на каждый из них — можно поставить что душе угодно из миллионов разных программ.
Чего грустить, что мы слегка проспонсировали НТР, купив еще немножечко кремниевых пластинок?
… а если не дам скайпу, то она уйдет дисковому буферу.
Точнее не так — сколько я ни дам памяти скайпу, а она все равно уйдет или дисковому буферу, или кэшу подкачки страниц, вот так.
И чего тогда за ОЗУ переживать, если это некая абстракция, управляемая операционной системой по ее усмотрению?
:-)
Рендеринг текста вас ненавидит, тут много неочевидного.
А layout()-инг он побольше, потормознее, и содержит в себе массу не очень очевидных шагов. Его задача — рассчитать, где какую букву рисовать, с учетом шрифтов, эффектов, состояний и т. д. И желательно чтобы это не вылилось в пересчет всего document.
Добавьте платформозависимые гитики типа поверхностей DirectDraw или OpenGL текстур. Добавьте процессы и IPC между ними. Вспомните про pango, cairo, X server pixmaps, XRender и MIT-SHM…
Браузеры — штука сложная.
И знаете что смешно? На современном оборудовании рисование в онскрин контексты будет медленнее, чем весь этот адов бутерброд из стеков, енжайнов, и прочего.
Просто потому, что начиная еще с Windows Vista старые трюки по акселерации GDI+ аппаратно прекратили поддерживать. Не сразу, постепенно, но время идет — и в известном смысле старые трюки на новом железе работают во много раз медленнее, чем на старом.
… это и есть наше представление чата в памяти.
А все что вы видите в чате — оно по вашему где? У вас в памяти. Если не поленитесь поскроллить «назад в прошлое» — будете видеть моменты подгрузки истории чата за «уже убранный из кэша» период. Заодно и сможете оценить — нужно ли вам постоянно такое слайд-шоу, хех, или кэш за последних пару дней — оно вполне решение…
Планку памяти я один раз куплю, а не раз в две недели, так что это не расходы, а инвестиция, и вопрос доходов нерелевантен :-)
И вдруг выяснится, что это вполне сравнимо со скайпом, в котором поди полсотни активных чатов с фоточками открыто, хех.
Но куда они все жрут-то?!
Тут в общем-то секрета нет — первое на что уходит ОЗУ так это на разные double/triple buffers, caches, и прочие чудеса размена тормозов на память. Просто для того, чтобы не тратить ресурс процессора на бессмысленно одинаковые действия.
Вот на секундочку представьте, что вместо этих кэшей — скайп при смене абонента заново скачивает, layout-ит и рендерит историю чата. Удобно ли будет? А так он просто говорит готовой картинке BitBlt.
А еще можно считать в процентах. От 16ГБ ОЗУ ваши «почти четыреста мегабайт» — это 2%. Вот реально, 2% — это катастрофично важно?
И все становится acceptable :-)
Если хотите — это и было началом заката «теплого лампового» скайпа. Я до последнего к слову пользовался сначала 2.2, а потом 4.3…
И да, спасибо за напоминание, действительно — скайп начали ломать еще до покупки, все верно. Я поленился за датами в википедию заглянуть, а зря, как оказалось :-)
А я например предпочитал скайп версии 2.2, и 6я версия — это покрашенный картонный новодел :-)
… именно потому, что к этому моменту микрософт старый скайп полностью переписали. С нуля. И он уже больше не был пир-ту-пир. Внезапно так. И веб версию выкатили.
Более того, я очень хорошо помню процесс запуска этой самой «версии с видеочатами». Именно в это время вся сеть скайпа легла, из 45 млн активных пиров в сети осталось примерно 9 млн, и те линуксовые :-)
Шестерка? Да ладно, по сравнению с второй версией — ужас на крыльях ночи, не умеющий даже в нотификации (вот радость — при приходе сообщения всплывает весь скайп целиком вместо нужного чата, да ладно! как это может быть удобно?)
Не всем по скайпу присылают аж три файла в месяц :-) Мне диалог с прогрессом скачанных файлов (помните такой?) приходилось чистить регулярно, потому что быстро «зарастал» принятыми файлами и нещадно тормозил.
Да потому что огромная куча этих «файлов» — картинки, в виде например скриншотов. «У мея еработает». И гораздо удобнее их увидеть сразу в уменьшенном виде, чем ползать «просмотрщиком факсов» в общей свалке…
У вас параллельная вселенная, хех. Скайп никогда не работал идеально, он всегда был альтернативно-вычурный.
Ну вот например, пишешь ты абоненту текст. Оно делает вид что отправилось. А потом, через пару дней(!!!) появляется рядом с текстом желтый треугольник — «нишмагла». Офигеть идеально работало…
Хотя казалось бы, что может быть проще…