[devel] Q: [python3-3.3.1] RLIMIT в hasher`е
Aleksey Avdeev
solo на solin.spb.ru
Ср Апр 10 21:06:04 MSK 2013
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. Если у нас это запрещено -- отключу тест.
>>>>>
>>>>> Какой именно лимит?
>>>>
>>>> В коде (см.
>>>> <http://git.altlinux.org/people/solo/packages/?p=python3.git;a=blob;f=python3/Lib/test/test_resource.py;h=f3416b7b43ef2db9094401f65abe78222af7746a;hb=001b4a54de71226a2f7e0d9f5a409774a686effd>):
>>>>
>>>> # 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) в
>> <http://git.altlinux.org/people/solo/packages/?p=python3.git;a=blob;f=python3/Modules/resource.c;h=b294a8cfe169bbc209e7e183b2eedbe018ed14b0;hb=001b4a54de71226a2f7e0d9f5a409774a686effd>)
>> возвращает 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://bugs.python.org/issue6083>
--
С уважением. Алексей.
----------- следующая часть -----------
Было удалено вложение не в текстовом формате...
Имя : signature.asc
Тип : application/pgp-signature
Размер : 897 байтов
Описание: OpenPGP digital signature
Url : <http://lists.altlinux.org/pipermail/devel/attachments/20130410/afe352c8/attachment-0001.bin>
Подробная информация о списке рассылки Devel