LINUX.ORG.RU

ulimit -s unlimited
ulimit -d unlimited
ulimit -m unlimited
сделал.

Artem-Dnepr
() автор топика
Ответ на: комментарий от Boy_from_Jungle

Памяти дофига. Да и какая разница сколько памяти, если я хочу выделить виртуальную, которую я могу сколько угодно выделить. Вот когда я захочу туда записать что-то вот тогда тормоза и начнуться.

Я точно помню, что год назад я мог выделять сколько угодно.

Artem-Dnepr
() автор топика
Ответ на: комментарий от kto_tama

> вроде как есть ограничение - не более 2 гигов на процесс

Где есть? Как безобразие отключить?

Artem-Dnepr
() автор топика
Ответ на: комментарий от kto_tama

В x86_64 есть. Профит очевиден: 780k+ страниц vs 1k5.

mv ★★★★★
()
Ответ на: комментарий от Artem-Dnepr

> Проц - I7 так что ММУ там уж точно есть.

Если твоей программе столько памяти нужно, предусмотри поддержку hugetlbfs. Реально быстрей ворочаться будет. Читать Documentation/vm/hugetlbpage.txt

mv ★★★★★
()

как выделяешь? система точно x86_64?

вот такое у меня работает

#include <stdio.h>
#include <stdlib.h>

int main()
{
        char * p = malloc(4L * 1073741824L);
        getchar();
}

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

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

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

> Идиотский совет. Вначале надо разобраться почему оно вообще не работает, а потом, если приспичит, заниматься оптимизацией.

Спасибо, КО. malloc(3G) тоже очень умно.

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

> Мммм... А как тогда, допустим, тот же mysqld кушает у меня под 16Gb с гаком без всяких hugetlbfs :-?

Потому что я не говорил, что для работы с дофига памяти НУЖЕН hugetlb.

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

hugetlb не хочется использовать, потому что хочется в разумных пределах сохранить портабельность.

Artem-Dnepr
() автор топика
Ответ на: комментарий от ratatosk
#include <stdio.h>
#include <stdlib.h>

int main()
{
        char * p = malloc (4L * 1073741824L);
        printf("%p\n", p);
        getchar();
}
$ ./a.out
0x7f29894d3010

$ ps axvm | grep a.out
15974 pts/1    -      0:00      0     1 4197998 448  0.0 ./a.out
Reset ★★★★★
()
Ответ на: комментарий от Artem-Dnepr

Думаю надо выяснить как собрано ядро.

Reset ★★★★★
()

если ядро 3/1 G, то куда же может malloc смапить 3G, если кроме кучи есть код, стек, библиотеки итд ? нет свободных адресов на 3G

gavv
()
Ответ на: комментарий от Artem-Dnepr

Можно настроить vm так, чтобы выделение всё равно происходило, даже если физической памяти нет. Но в этом случае, если ты займешь всю физическую память, случится страшный песец и придется жать на reset :)

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