LINUX.ORG.RU

Что каждый программист должен знать о памяти


1

0

Один из разработчиков ядра, Ulrich Drepper, начал публикацию своего труда, "Что каждый программист должен знать о памяти" ("What every programmer should know about memory"), описывающий то, как взаимодействуют программное обеспечение и системная память. Несмотря на то, что эффективность работы памяти зачастую определяет эффективность работы всей программы, материалов на тему того, как избежать узких мест в ее производительности не так много. Данная работа призвана устранить этот недостаток.

Публикация разбита на семь частей, каждая из которых будет появляться с периодичностью в одну-две недели после предыдущей. Публикация производится сайтом http://lwn.net, выкладываемые части некоторое время будут доступны только подписчикам. После того как будут выложены все части, текст будет выложен в публичный доступ.

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

>>> Часть 1

Нифига себе. Зачетная публикация, однако.

balodja ★★★
()

полезная штука, жду следующих частей с конкретными примерами оптимизации

lester ★★★★
()

Ого... Не новость про мастер-классы питона/руби/жавы/etc, не кривые переводы манов и не беззастенчивая реклама своих поделий .. "Может ЛОР не так уж безнадёжен?" (c).. Хотя.. с другой стороны можно сказать "Что ты сделал для ЛОР?" (c) :)))

>..Зачетная публикация..

>..полезная штука..

Полностью присоединяюсь!! Читал, открыв рот; даже макароны остыть успели... :D))

farisey
()

Надо бы перевод организовать. Язык так не сложный, но на родном читать все равно веселее :)

nu11 ★★★★★
()

бегло просмотрел статью. часть материала нам преподносили в вузе. (специальность КРЭС. привет коллегам ;))

anonymous
()

Утро. Отличная статейка. У кого есть логин? Напишите пусть один "and" снесет: > hardware and and further limited

Спсб :)

anonymous
()

> Что каждый программист должен знать о памяти

Явный 4.2. Не должен каждый программист знать это о памяти.

sv75 ★★★★★
()

Интересная статья, с нетерпением жду продолжения.

shuthdar ★★★
()

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

Видать специально накарябал для отщепенцев из Мазила-фаундейшн, у них с этим больщущие проблемы.

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

> Явный 4.2. Не должен каждый программист знать это о памяти.

Не должен каждый программист помнить о памяти.

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

> А Ульрих разве ядро? Разве не глибц?

Да, именно глибц. Это я стормозил, привык, что все всё время ядром занимаются :)

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

>> А Ульрих разве ядро? Разве не глибц?

> Да, именно глибц. Это я стормозил, привык, что все всё время ядром занимаются :)

Не только. Ещё elfutils -- аналог GNU binutils.

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

> Запретить программерам иметь на компах больше 256 Мб оперативки и все :)

Я стараюсь придерживаться подобных методов. Если всё нормально работает на компе с Пентиум 3 и 256 МБ, то потом в продакшене на Ксеонах с 4 ГБ летать будет.

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

Читать каждому ява-программеру :))

anonymous
()

Программист должон знать что память есть, и есть кто-то, кто её ест. Я ничё не помню. Спасибо за внимание. Из-за острова-а на стрежень,...

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

> Программист должон знать что память есть, и есть кто-то, кто её ест. Я ничё не помню. Спасибо за внимание. Из-за острова-а на стрежень,...

такие "программисты" маздайку написали. и огнелиса :)

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

Да, мою память съел лис... этот...не помню. И нечего тут... понимашь. С моё попиши...

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

>> такие "программисты" маздайку написали.

> Это которая работала на 16Мб, что-ли?

а как же пресловутые 640кб, которых "должно быть достаточно всем и каждому"?

Даже, когда мд кушала 16мб, это было много по тем временам.

gaa ★★
()

Заинтригован. Стало даже интересно, как все эти графики зараядки-разрадки интегрирующей цепочки связаны с программированием. Наверное, это будет раскрыто в следующих сериях.

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

>>Программист должон знать что память есть, и есть кто-то, кто её ест.

Золотые слова!

anonymous
()

Да вот не каждый должен это все знать, а только те кто с хардом близко работают. Остальным полезно для общего развития.

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

anonymousI
()

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

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

> Да вот не каждый должен это все знать, а только те кто с хардом близко работают. Остальным полезно для общего развития.
Это полезно тем, кто хочет писать _эффективные программы. А быдлокодерам, действительно, нужно только для общего развития.

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

> А быдлокодерам, действительно, нужно только для общего развития.

каноническое определение быдлокодера подразумевает отсутствие всякого развития

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

> зачетная статейка. надо бы ее это, того... в продакшн... напечатать в виде брошурки и по институтам. Глядишь яверов и дотнетчиков меньше будет.
Ой, вряд ли их меньше станет. Они ведь предпочитают читать только официальную макулатуру от производителей технологии.
Вот в соседнем со мной кубике сидит жабист, который, хоть и неглуп как программист, никак не может поверить в то, что менеджер памяти в жаве, мягко говоря, не самый лучший. Зато как затирать о теоретически возможных оптимизациях в JIT-компиляторах, так это его хлебом не корми :)

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

>Это полезно тем, кто хочет писать _эффективные программы. А быдлокодерам, действительно, нужно только для общего развития.

Программа будет "эффективной" только для одного процессора/архитектуры и далеко не всегда затраты на подобного рода оптимизацию оправданы. Хотя соглашуть, это (кросплатформенность,универсальность) - быдлокодерство.

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

>> Это полезно тем, кто хочет писать _эффективные программы. А быдлокодерам, действительно, нужно только для общего развития.

> Программа будет "эффективной" только для одного процессора/архитектуры и далеко не всегда затраты на подобного рода оптимизацию оправданы. Хотя соглашуть, это (кросплатформенность,универсальность) - быдлокодерство.

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

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

> Хотя соглашуть, это (кросплатформенность,универсальность) - быдлокодерство.

Ась? Кроссплатформенность - быдлокодерство? Я не ослышался?

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

> зачетная статейка. надо бы ее это, того... в продакшн... напечатать в виде брошурки и по институтам. Глядишь яверов и дотнетчиков меньше будет.

Почему вы так не любите людей? :-/

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

Это называется ирония. Впрочем, тебе этого не понять...

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

> Это полезно тем, кто хочет писать _эффективные программы. А быдлокодерам, действительно, нужно только для общего развития.

Всю историю програмимирования наблюдается движение от написания эффективных программ к эффективному написанию программ, а вы хотите повернуть историю вспять? ;)

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

> т, который, хоть и неглуп как программист, никак не может поверить в то, что менеджер памяти в жаве, мягко говоря, не самый лучший.

Допустим что в джаве вообще самый худший менеджер памяти из всех созданных человечеством. Внимание, вопрос: что это изменит? Вместо JMS заставят использовать bind/listen/connect ?

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

> Даже, когда мд кушала 16мб, это было много по тем временам.

Много по сравнению с *чем* ? С Solaris, что ли? Это не так.

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

> Всю историю програмимирования наблюдается движение от написания эффективных программ к эффективному написанию программ, а вы хотите повернуть историю вспять? ;)

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

gaa ★★
()

Правильное название статьи такое: "Что каждый программист [середины 20-го века] должен знать о памяти".

Что-то мне подсказывает, что данная статья является вялой попыткой ответить на претензии по проблемам с памятью в FF, и перенести проблему с больной головы на здоровую.

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

Подрочил студентик? Покажи-ка лучше свой эффективный код. Да поясни как функция разрядки ячейки памяти соотносится с эффективностью лиспового кода.

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

>> Даже, когда мд кушала 16мб, это было много по тем временам.

> Много по сравнению с *чем* ? С Solaris, что ли? Это не так.

По сравнению с типовой конфигурацией домашнего компа того времени. мегабайтик тогда обходился дороже.

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

>> т, который, хоть и неглуп как программист, никак не может поверить в то, что менеджер памяти в жаве, мягко говоря, не самый лучший.

> Допустим что в джаве вообще самый худший менеджер памяти из всех созданных человечеством. Внимание, вопрос: что это изменит? Вместо JMS заставят использовать bind/listen/connect ?

Не уследил за мыслью, прошу более развёрнутого ответа.

gaa ★★
()

Прочитал статью, полная фигня. Зачем мне это знать, если я пишу на C#? По поводу 256Мб каждому программисту... даже Visual Studio 2005 не запустишь. Не говоря уже о 2008.

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

> Покажи-ка лучше свой эффективный код. Да поясни как функция разрядки ячейки памяти соотносится с эффективностью лиспового кода.

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

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

> Прочитал статью, полная фигня. Зачем мне это знать, если я пишу на C#? По поводу 256Мб каждому программисту... даже Visual Studio 2005 не запустишь. Не говоря уже о 2008.

Что б вы, вероятно быдлокодер, судя по языку программирования, знали, какое огромное количество операций таится за несколькими символами кода.

gaa ★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.