LINUX.ORG.RU

чем топ не угодил?
или ps -нужные_опции

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

про ps не знал, благодарю

fads ★★
() автор топика

никак. в любой момент можно сделать mmap+munmap, и нифига не факт, что контролирующий процесс успеет отловить состояние vsize/rss в нужный момент. в данном случае, возможно, setrlimit поможет.

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

Можно попробовать в openvz контейнере запускать, там будет видно (/proc/user_beancounters) максимальное количество потребленной памяти.

Но это не очень удобно, т.к надо либо устанавливать в VE целую систему, либо что-то хитрое изобретать с перемонтированием корня, или установить туда статически слинкованную прогу вместо init.

Но зато память можно будет оценить довольно точно и правильно (будет видно именно пиковое значение потребления).

может в linux containers будет проще.

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

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

dos ≠ unix. хотя всё зависит от правил, заданных ТС-ом. можно ограничить размер виртуальной памяти, а можно — реально выделенной. как вариант: алгоритм, требующий линейного массива, но использующий только последние n байт решения. в таком случае можно делать уже ненужным страницам munmap и держать в rss не больше 64к, например, при vsize > 2G. так что с точки зрения классического расчёта потребления ОЗУ всё будет слишком неоднозначно /* вспоминая школьные олимпиады лет десять назад… */.

arsi ★★★★★
()

Обычно в задачах ставится ограничение на максимальное потребление памяти - для этого можно использовать ulimit, чтобы ограничить аппетит программы.

Legioner ★★★★★
()

плюсую про неоднозначность

например, на 64-битной системе можно выделить 1000000-гигабайтный массив и использовать из него 30 мегабайт (все остальное — нули) — такое вполне может быть полезно при юзании метода вращений

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

>например, на 64-битной системе можно выделить 1000000-гигабайтный массив и использовать из него 30 мегабайт (все остальное — нули) — такое вполне может быть полезно при юзании метода вращений

на олимпиадах не прокатит, будет фейл по памяти. емнип, в регламенте неоднозначности нету - меряется объём выделенной памяти.

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

> будет фейл по памяти

значит машинка настроена неправильно:

Попробовал. Во время работы прога делала 17 раз new double[1e+11] и 20 раз new int [1e+11]. top показывал в поле VIRT вопросик, а в поле RES 60m в максимуме. Прога выдаёт правильный результат. Правда, что-то она много векторов выделяет, надо будет подебажить...

емнип, в регламенте неоднозначности нету - меряется объём выделенной памяти.

ну вот и разберись, чтобы без емнип.

www_linux_org_ru ★★★★★
()

З.Ы. на http://eao197.blogspot.com чувак много раз нелестно отзывался о приеме на работу программистом бывших олимпиадников; такое ограничение по памяти имхо ситуацию только усугубит

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

>ну вот и разберись, чтобы без емнип.

If the submitted solution compiled correctly, the grading system will, at some time later, execute the compiled program under Linux, enforcing the task-specific run-time and memory resource constraints with several inputs.

Т.е. лишнего выделить тупо не дадут.

чувак много раз нелестно отзывался о приеме на работу программистом бывших олимпиадников; такое ограничение по памяти имхо ситуацию только усугубит

Спортивное программирование оно такое, особое :) Для решения рабочих задач нужно слегка другое мышление, и не всем удаётся перестроится, если мозг совсем выеден олимпиадами, сам таких видел.

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

>If the submitted solution compiled correctly, the grading system will, at some time later, execute the compiled program under Linux, enforcing the task-specific run-time and memory resource constraints with several inputs.

тут недосказано, какая имеется в виду память — виртуальная или физическая

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

Речь идет не об ограничении, а о подсчете использованной памяти (по крайней мере так написал ТС).

OpenVZ имеет счетчик который покажет максимальное количество памяти использованной контейнером. Если программу запустить в контейнере как инит, то соотвественно в поле oomguarpages увидим максимальное кол-во потребленной физической памяти.

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

>тут недосказано, какая имеется в виду память — виртуальная или физическая

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

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

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

еще пример: форк

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

ну это понятно, что о подсчёте. кстати, можно ещё через strace пропустить и подсчитать по mmap/munmap/etc пиковое потребление.

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

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

Олимпиадное программирование - это спорт. Никто ведь не возмущается, что спортсменов ограничивают в использовании допинга ;) К тому же, ограничения по памяти даются с небольшим запасом, поэтому при правильном алгоритме решения памяти точно хватит.

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

удобная утилита, но ..

/usr/bin/time -f "mem %Mkb time %E" ./1000 
mem 1888kb time 0:00.00
когда тимус говорит
1000 C Accepted 0.015 121 КБ

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

The Judge System measures the size of memory used by a compiled solution

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