LINUX.ORG.RU
ФорумTalks

Почему линукс в принципе может работать?


0

0

Почитал раздел BUGS в man malloc и ядреные доки на эту же тему выделения памяти. Теперь кто-нибудь объясните как при таких жестоких багах оно фурычит? Тудыть перетудыть, но оказывается если malloc вернул ненулевое значение, это еще не значит, что памятью можно пользоваться?!!!!!!!

anonymous

да не может он работать, что вы! это миф! на самом деле линукса нет! и ложки тоже нет...

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

Есть программка числодробильная под винды, на Си, нужно ее перенести под линукс. В программе интенсивно используется память. И как мне писать код, если нет никакой гарантии, что он не свалится посреди расчетов?

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

>если нет никакой гарантии, что он не свалится посреди расчетов

А где она есть?

Xellos ★★★★★
()

In case Linux is employed under circumstances where it would be less desirable to suddenly lose some randomly picked processes, and moreover the kernel version is suf‐ ficiently recent, one can switch off this overcommitting behavior using a command like # echo 2 > /proc/sys/vm/overcommit_memory

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

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

почему-то мне кажется, что после того как вы ее перенесете на linux, она в несколько раз быстрее будет работать.

anonymous
()

... если читан, то не понят ... ;)

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

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

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

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

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

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

Уже учу. Не думал, что в линуксе можно споткнуться на ровном месте. Я все-таки привык, что если память выделена, значит она выделена :(

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

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

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

Уже написали:
echo 2 > /proc/sys/vm/overcommit_memory

saper ★★★★★
()

Между прочим, это фича в линуксе как раз из-за програм на Фортране, кои почти все научные. Почему? А потому, что в 77 нет динамического выделения памяти и массивы приходится размещать статически. Вот люди и делают размещение "с запасом", возможно, затребованный объем памяти и не понадобится. Если запретить overcommitment, то программа тупо рухнет по нехватке памяти на стадии инициализации массива. Так что не все так просто, о мой юный падаван, совращенный темной стороной Силы (т.е. тьфу, виндой).

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

> Между прочим, это фича в линуксе как раз из-за програм на Фортране, кои почти все научные.

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

Хорошо хоть overcommitment есть.

В винде я не упомню проблем из-за фортрана, там тоже фича есть? И по поводу винды, типичная эволюция компьютеров: СМ и ЕС, потом xt, at, 386-е, 486-е, пни и т.д. Угадайте, что на них после ЕС и СМ стояло? Да-да-да, ms-dos, потом винда 3.1,95, nt! Как экзотика альфа c дек-юниксом. Сейчас о линуксе заговорили из-за кластеров в основном и начали прижимать с лицензиями.

anonymous
()

> если malloc вернул ненулевое значение, это еще не значит, что памятью можно пользоваться?!!!!!!!

Это происходит, если память в системе закончилась. Есть надежда, что к тому времени, когда приложение ФАКИМЧЕСКИ начнёт использовать выделенную память, достаточное количество физической памяти уже освободится (ОС-то многозадачная). Если же не освободится - приложение будет убито, чтоб не мучилось. IMHO - разумный компромисс. У меня память ещё ни разу не кончалась.

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

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

Успокойся и прекращай истерику. В винде наверняка есть аналогичное поведение, просто о нём предпочитают умалчивать, чтоб такие, как ты, не вопили на каждом углу "меня обманули". В линуксе всё будет нормально, если только ты не умудришься в своей проге сожрать всю оставшуюся память. Если умудришься - лучше купи ещё памяти, а не страдай хернёй.

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

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

На подобные случаи есть политика overcommitment=3, которая позволяет разумно ограничить количество выделенной виртуальной памяти. По умолчанию - объем свопа + 50% оперативы. При такой политике машина в большинстве случаев "выживает" и не ограничивает объем выделенной памяти, если он задан "разумно".

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

> Успокойся и прекращай истерику. В винде наверняка есть аналогичное поведение, просто о нём предпочитают умалчивать, чтоб такие, как ты, не вопили на каждом углу "меня обманули".

Я всегда спокоен. В винде натыкался на фрагментацию памяти, пока у меня впечатление, что в линуксе с этим лучше.

Но я стараюсь писать надежные программы! Я всегда проверяю все вызовы функций системы и мне не нравится потенциальная непредсказуемость поведения. У меня есть резерв памяти и если ее вдруг не хватает, то часть данных можно на диск сбросить, как-то осмыслено реагировать, а не играть в рулетку "Segmentation fault".

Знаете, ничего веселого, если программа считала что-то неделю и грохнулась за здорово живешь.

Хорошо с overcommit=2 наверное можно обеспечить правильное поведение.

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

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

Если ты хочешь, чтобы система гарантировала, что выделенный пул памяти был доступен всегда, пока работает твоя программа - тогда тебе в руки политика "2" или "3". Если хочешь, чтобы память зарезервированная "за здорово живешь" все-таки была доступна другим приложениям - тогда "1". При политике "2" ты вообще не сможешь ничего запустить "тяжелого", если твоя программа зарезервировала весь свободный объем памяти на момент ее запуска, а пользует всего 1Мб, к примеру. В общем, в последнем патологическом случае непонятно, зачем тебе Linux, Windows или другая многозадачная система. Писать уж под MS-DOS с поддержкой 4GB памяти.

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

> Но я стараюсь писать надежные программы! Я всегда проверяю все вызовы функций системы и мне не нравится потенциальная непредсказуемость поведения.

Трудно быть идеальным в неидеальном мире. Разработчики линукса и GNU не могут себе позволить рассчитывать исключительно на таких добросовестных. Большинство быдло кодеров относится к программированию гораздо более рас..яйски. Поэтому приходится искать компромисс.

> У меня есть резерв памяти и если ее вдруг не хватает, то часть данных можно на диск сбросить, как-то осмыслено реагировать, а не играть в рулетку "Segmentation fault".

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

> Знаете, ничего веселого, если программа считала что-то неделю и грохнулась за здорово живешь.

На этот случай под расчётную задачу выделяют отдельную машину и больше ничего на ней не запускают. Тогда, если в самой программе память не течёт, то в линуксе всё будет OK. Лучше просто взять по памяти коэффициент запаса и стараться не исчерпывать её полностью. Честно говоря, не вижу проблем в этом случае. У меня лично неделями никогда ничего не считалось, но пару дней - бывало. Ничего страшного не случалось :)

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

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

Чтобы она меня не обманывала грубо говоря. То есть, если памяти нет, то так и говорила. Впрочем, "политика 2" как будто решает вопрос.

> В общем, в последнем патологическом случае непонятно, зачем тебе Linux, Windows или другая многозадачная система. Писать уж под MS-DOS с поддержкой 4GB памяти.

Программы не самые простые, данными с дисками обмениваются, по сети желателен доступ, в перспективе 64 бита и более 4 Гб и прочее.

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

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

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

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

> Чтобы она меня не обманывала грубо говоря. То есть, если памяти нет, то так и говорила. Впрочем, "политика 2" как будто решает вопрос.

Самое интересное, она тебя не обманывает. Отключи своп и пусти свою программу в sigle-user-mode. Увидишь, что реальный объем памяти, который ты можешь зарезервировать и тот, который ты получишь, не отличаются. Проблема, грубо говоря, в том, что есть еще другие "недобросовестные" программы.

Кстати, ИМХО, overcommitment=2 это оверкилл, _реально_ жесткие ограничения. Я продпочитаю политику "3". Самое худшее, что может случиться - интенсивный свопинг. Но никаких "случайных" падений и убийств.

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

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

чего курим??

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

> чего курим??

Курят те, кто до сих пор пишет на фортране. Ни ФП, ни уборки мусора, всё бл%ть надо делать голыми руками. Циклы вручную писать - это пля удел искалеченных бейсиком и поц калом. До такого можно дойти только по большой накурке. Давить.

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

> Курят те, кто до сих пор пишет на фортране. Ни ФП, ни уборки мусора, всё бл%ть надо делать голыми руками. Циклы вручную писать - это пля удел искалеченных бейсиком и поц калом. До такого можно дойти только по большой накурке. Давить.

Слышь, пупсик. Уборка мусора нужна быдлокодерам, рисующим морды, потому что они патологически неспособны убирать свои испражнения. Чего там про циклы-то? Ниасилил, что ль?

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

> Слышь, пупсик.

Особенно я прусь, как фортранисты держатся за свой недоязычок. Что дитятко, взрослое ФП не умещается в твой девичий моск?

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

> Уборка мусора нужна быдлокодерам, рисующим морды.

Расскажи это создателям Лиспа, вот они приколются!

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

> Особенно я прусь, как фортранисты держатся за свой недоязычок. Что дитятко, взрослое ФП не умещается в твой девичий моск?

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

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

> Расскажи это создателям Лиспа, вот они приколются!

Сколько ни пасал вычислительные программы, а либки полезные видал только на фортране и C, последнее время - ещё на жабе. Лиспов, перлов, ПХП и васиков не встречал. К чему б оно? :)

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

Знаешь родной как меня жоско задрало продираться через чужой быдлокод на фортране и разбираться что он делает. Комертариев нет, документации нет создатели умерли или уехали в Америку. Двадцать цыклов по переменным типа POPOAP ZHPAAA PIZDCC на тыщу строк мляха. А код оказывается всего-то решает систему ОДУ например или типа того. Пля, если б ты асилил лисп, хаскель, окамл, ты бы знал, что это делается не в 100-1000 строчек, а в 1-10. Уткнись, странное быдло.

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

> Сколько ни пасал вычислительные программы, а либки полезные видал только на фортране и C, последнее время - ещё на жабе. Лиспов, перлов, ПХП и васиков не встречал. К чему б оно? :)

А к тому, что среднему завлабу или менеджеру дешевле содежрать десяток студентов-быдлокодеров на фортране, чем одного хакера на OCaml или Clean. А то что их быдлокод нихера не поддерживаем, его уже не #бёт.

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

> Знаешь родной как меня жоско задрало продираться через чужой быдлокод на фортране и разбираться что он делает.

Интересно, а ЗАЧЕМ ты это делаешь? Есть библиотека, которая делает что-то нужное, включаем её в проект и используем. Зачем продираться?

> Комертариев нет

Ахренеть. Наверно, виноват фортран. В нём же комментарии не предусмотрены, правда?

> документации нет

Понятно, что снова виноват фортран. Он, видимо, запрещает писать документацию.

> создатели умерли или уехали в Америку.

Ну так не используй этот код. Или на любом друго языке так же бездарно писать нельзя?

> Пля, если б ты асилил лисп, хаскель, окамл, ты бы знал, что это делается не в 100-1000 строчек, а в 1-10.

Похоже, следующая стадия для тебя - matlab. Там точно одна строка будет. Просто признайся, что слабак, и я отпущу тебя с миром. :)

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

> А к тому, что среднему завлабу или менеджеру дешевле содежрать десяток студентов-быдлокодеров на фортране, чем одного хакера на OCaml или Clean.

Писец. Где ты студентов на фортране-то нашёл? Совсем чел связь с реальностью потерял. Студенты пишут на васике или ПХП, фортран они давно не учат. Фсат, в общем.

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

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

О да... Только у тебя большая нагрузка на процессор. А вот если у тебя прога в своп полезла -- ее можно спокойно килять, толку в этом не будет. Проще еще оперативки докупить.

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

> По хорошему, для моих расчетов нужно несколько терабайт RAM и того мало, приходится извращаться с топологией сетки, скидывать что-то на диск, а это время

Ни фига себе. Тебе куда терабайт-то? Берем любой современный газодинамический пакет (CFX, Fluent или StarCD). Везде действует простая формула: 1 гигабайт на 1 млн.ячеек сетки (примерно). То есть ты хочешь сказать, что ты считаешь задачи до 1 млрд. ячеек?

Это не моделирование атмосферы случаем?

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

> Ахренеть. Наверно, виноват фортран. В нём же комментарии не предусмотрены, правда?

Программа на нормальном языке даже без комментариев легко читается. А программа на фортране без комментариев выглядит бред сифилитика.

> Ну так не используй этот код.

Чаще всего нужен не сам код, а алгоритм, который этот код реализует. И выковыривать его из фортрановых фантазий предков-быдлокодеров - это надо димедролу нажраться.

> Похоже, следующая стадия для тебя - matlab.

Вы, видимо, кроме фортрана и фортраноподобных языков ничего другого принципиально не признаёте? Для числодробильных программ есть OCaml, SML, может ещё Clean, как тут предлагали. Для сложных символьных вычислений - Mathematica. Для сложной логики - Lisp и снова Mathematica. И вместо карандаша и бумаги для вывода уравнений и доказательства теорем - обратно Mathematica. Рекомендую ознакомиться, вероятно, найдёте что-то для себя.

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

> Программа на нормальном языке даже без комментариев легко читается. А программа на фортране без комментариев выглядит бред сифилитика.

Ну, если её писал студент, как тут рассказывали, - то да.

> Чаще всего нужен не сам код, а алгоритм, который этот код реализует.

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

> Вы, видимо, кроме фортрана и фортраноподобных языков ничего другого принципиально не признаёте?

А C - он фотраноподобный? Вроде на васик не очень похож...

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

> А C - он фотраноподобный?

Вы не знаете, чем императивный стиль отличается от декларативного?

http://en.wikipedia.org/wiki/Imperative_programming и http://en.wikipedia.org/wiki/Declarative_programming, почитайте, будет интересно. Если вкратце, некоторые вещи удобно программировать в императивном стиле, некоторые - наоборот. Языки типа камла поддерживают и тот и другой стиль одинаково хорошо. А фортран с матлабом ОЧЕНЬ сильно ограничивают программиста своей жёстко императивной семантикой. Приходится возиться не с задачей, а с однобокостью языка, и выдумывать всякие костыли.

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

>Есть программка числодробильная под винды, на Си, нужно ее перенести под линукс. В программе интенсивно используется память.

Перепиши ее на Java. Это язык с автоматическим управлением памятью. Надеюсь у тебя на число дробильном аппарате 4Gb мозгов? Жабе хватит, не свалится

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

Терь понятно, почему Америка стала проигрывать технологическую гонку Китаю. Потому что такие специалисты не в Китай двинули, а Америку разрушать, после того как СССР разрушили

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

> Терь понятно, почему Америка стала проигрывать технологическую гонку Китаю. Потому что такие специалисты не в Китай двинули, а Америку разрушать, после того как СССР разрушили

Судя по anonymous (28.08.2006 21:57:50) - ещё не все, некоторые ещё остались. Есть надежда, что в Китай рванут.

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

Когда я работал МНСом в одном институте, там была одна тётенька-фортранистка. И у неё была очень характерная методика написания программ. Она расстилала по полу большой кусок обоев, насколько её комнаты хватало, и рисовала бооольшую блок-схему цветными фломастерами. Потом садилась, и начинала вбивать код, и вбивала, пока вся схема не оказывалась запрограммирована. Затем запускала, смотрела на результат. Затем исправляла свою схему разноцветными фломастерами, заклеивая кусочками бумажки плохие места. Затем снова вбивала код.... Сейчас она в Голландии. Грустно, товарищи.

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

Видишь, она в Голландии, ума хватило, мож преподом работает, готовит тэсэзэть UMLдиаграмщиков для VisualStudioTemaEdition2005

А такие умные вроде тебя и меня за еду на дядю спину гнут. Ну и кто умнее?

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

> А такие умные вроде тебя и меня за еду на дядю спину гнут. Ну и кто умнее?

Просто разные люди направляют свой ум на разные вещи. Кто-то честно пашет на работе, а кто-то усиленно занимается карьеризмом.

anonymous
()

Взаимная компенсация ошибок, ИМХО :)

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

> А к тому, что среднему завлабу или менеджеру дешевле содежрать десяток студентов-быдлокодеров на фортране, чем одного хакера на OCaml или Clean. А то что их быдлокод нихера не поддерживаем, его уже не #бёт.

Не надо так ругаться. Фортран используют по двум причинам:

1. Огромное количество готовых решений и библиотек "на все случаи жизни"

2. Простой компилятор (вследствие простого, если не сказать убогого синтаксиса), который генерирует _реально_ быстрый код.

Я двумя руками согласен с тем, что писать программу на фортране более 1000 строк - сущая каторга, ибо писал. Поэтому смотрю, в первую очередь, на С++

Лисп все же проблемно-ориентированный язык. Да, на нем решения зачастую проще и изящнее. Но цена неимоверно высока - тормоза. Поэтому для меня сейчас Lisp - "пилотный" язык, отладить и понять алгоритм, може что-то нетяжелое посчитать. Но если нужна скорость, тут уж...

OCaml не использовал, так что ничего сказать не могу.

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

> Ни фига себе. Тебе куда терабайт-то? Берем любой современный газодинамический пакет (CFX, Fluent или StarCD). Везде действует простая формула: 1 гигабайт на 1 млн.ячеек сетки (примерно). То есть ты хочешь сказать, что ты считаешь задачи до 1 млрд. ячеек?

Грубо говоря, если сетка трехмерная, то млрд узлов это 1000x1000x1000, что не так много на самом деле. А если динамику считать, то и подавно.

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

Ну, это от задачи и методики очень зависит. В нашей области (лопаточные машины) это ОЧЕНЬ много. Типовой расчет -- около 5-8 Гб, причем измельчение сетки на той же расчетной области значительного эффекта не дает.

Для расчетных областей уходящих в бесконечность существуют неструктурированные сетки.

Проблема даже в другом -- ну построишь ты такую сетку, ну запустишь... Сколько оно считаться-то будет? Кластера с линухом, конечно, наше всё, но головой-то тоже думать надо.

Или вы все-таки погоду/ядерные взрывы/мировой океан моделируете?

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

В винде другое поведение. Она по нехватке памяти выдает BSOD. (проверено лично на win2k).

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