On Wed, Apr 10, 2013 at 09:06:04PM +0400, Aleksey Avdeev wrote: > 10.04.2013 19:47, Dmitry V. Levin пишет: > > On Wed, Apr 10, 2013 at 06:41:36PM +0400, Aleksey Avdeev wrote: > >> 10.04.2013 17:45, Dmitry V. Levin пишет: > >>> On Wed, Apr 10, 2013 at 05:36:15PM +0400, Aleksey Avdeev wrote: > >>>> 10.04.2013 16:53, Dmitry V. Levin пишет: > >>>>> On Wed, Apr 10, 2013 at 01:11:56PM +0400, Aleksey Avdeev wrote: > >>>>>> Приветствую. > >>>>>> > >>>>>> Я правильно понимаю, что установка пользовательским процессом RLIMIT > >>>>>> в 1000000, запрещена настройками hasher`а? > >>>>> > >>>>> $ hsh-run -- sh -c 'ulimit -Ha' > >>>>> core file size (blocks, -c) unlimited > >>>>> data seg size (kbytes, -d) unlimited > >>>>> scheduling priority (-e) 0 > >>>>> file size (blocks, -f) unlimited > >>>>> pending signals (-i) 1032915 > >>>>> max locked memory (kbytes, -l) 64 > >>>>> max memory size (kbytes, -m) unlimited > >>>>> open files (-n) 4096 > >>>>> pipe size (512 bytes, -p) 8 > >>>>> POSIX message queues (bytes, -q) 819200 > >>>>> real-time priority (-r) 0 > >>>>> stack size (kbytes, -s) unlimited > >>>>> cpu time (seconds, -t) 7260 > >>>>> max user processes (-u) 1024 > >>>>> virtual memory (kbytes, -v) unlimited > >>>>> file locks (-x) unlimited > >>>>> > >>>>> Привысить значения этих hard limits ядро не даст. > >>>>> > >>>>>> PS: В Python-3.3.1 такую операцию пытается сделать > >>>>>> test.test_resource.ResourceTest. Если у нас это запрещено -- отключу тест. > >>>>> > >>>>> Какой именно лимит? > >>>> > >>>> В коде (см. > >>>> ): > >>>> > >>>> # Issue 6083: Reference counting bug > >>>> def test_setrusage_refcount(self): > >>>> try: > >>>> limits = resource.getrlimit(resource.RLIMIT_CPU) > >>>> except AttributeError: > >>>> pass > >>>> else: > >>>> class BadSequence: > >>>> def __len__(self): > >>>> return 2 > >>>> def __getitem__(self, key): > >>>> if key in (0, 1): > >>>> return len(tuple(range(1000000))) > >> ^^^^^^^ > >>>> raise IndexError > >>>> > >>>> resource.setrlimit(resource.RLIMIT_CPU, BadSequence()) > >>> > >>> И какие значения RLIMIT_CPU в результате пытается установить этот код? > >> > >> 1000000 (см. выделение). > >> > >> Там в конечном итоге setrlimit(resource, &rl)(см. функцию > >> resource_setrlimit(PyObject *self, PyObject *args) в > >> ) > >> возвращает errno == EPERM. > > > > Сколько значений RLIMIT_CPU передается в одном вызове setrlimit? > > Какие значения RLIMIT_CPU в результате пытается установить этот код? > > Вызов происходит так: > > setrlimit(resource, &rl) > > где: > > resource = 0 (константа RLIMIT_CPU из /usr/include/bits/resource.h) > > rl -- структура, содержащая: > > rl.rlim_cur = 1000000 > > rl.rlim_max = 1000000 Верно. > > На какое поведение setrlimit рассчитывает этот тест? > > Что setrlimit(resource, &rl) вернёт нечто отличное от -1. Верно. > > Что вообще тестирует тест по имени test_setrusage_refcount? > > Похоже он проверяет работоспособность вызова setrlimit (судя по коду). Неверно. > Появился в процессе исправления Верно, http://hg.python.org/cpython/rev/3e3a7d825736 -- ldv