LINUX.ORG.RU
ФорумTalks

[крик души] Ну и где, #%$, надёжность GNU/Linux?

 


0

0

Задолбало, товарищи! за-дол-ба-ло!!! И не знаю что делать.

Вот запустил nexuiz и для пробы выбрал "ultimate" в разделе видео-настроек. (Ну я понимаю, что это была не лучшая идея, но виснуть то зачем?) Спустя пару секунд амарок позаикался, покрякал, завис и позже заткнулся, тем временем мышь шевелилась рывками и тоже встала. numlock переключался с задержкой и тоже перестал реагировать. Всё зависло на хрен. Прямо как в оффтопике. Позор. :(

Такое уже случалось раньше и, судя по признакам, дело в свопинге. В высокопроизводительной многозадачной операционной системе, выполняющейся на двухъядерном процессоре и со свопом на sata-диске со включенным DMA. Смерть от свопинга. Приехали.

Практика показывает, что обычно в своп попадают редко используемые данные, и всё идёт хорошо. Но иногда в свопе оказываются часто используемые данные. Просто потому, что места в ОЗУ для них нет. И начинается бешеный свопинг, подкачка осуществляется не время от времени, а постоянно. Разумеется, это ОЧЕНЬ медленно. Ну пусть бы, раз программа не умеет экономить память - пусть тормозит. Но нэээт! Остальные программы, добросовестные, вообще останавливаются!!! Включая, разумеется, X.org и даже /bin/login! Однажды я просто не смог залогиниться с виртуального терминала, т.к. login слишком долго проверял пароль и отваливался по таймауту! Но я не пойму, ПОЧЕМУ??? Ведь процессор не используется (хотя бы одно ядро то), а для планировщика IO вроде как все равны. Откуда тормоза, блин? Как бороться? Как предотвращать?

★★★★★
Ответ на: комментарий от polachok

>не верю. в студию.

получай. В качестве параметра - число мегабайт для засерания. Если 
охота продолжить потом работу - брать свободную память + десяток мб, 
если ступор на неопределённый срок и резет не пугают - объём всей 
памяти или даже x2.

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

typedef struct {
	int key;
	char garbage[1020];
} data;

int f(const void * a, const void * b)
{//указатели - жопа, надо было писать на крестах
	return (*((data**)a))->key - (*((data**)b))->key;
}

int main(int argc, char** argv)
{
	int i;
	if (argc!=2) {
		fprintf(stderr,"Использование: %s <мегабайты>\n",argv[0]);
		return 1;
	}
	int len=atoi(argv[1])*1024*1024/sizeof(data);
	printf("len=%d\n",len);
	printf("sizeof(data)=%d\n",sizeof(data));
	printf("выделение памяти (1)\n");
	data ** array=(data**)malloc(sizeof(data*)*len);
	if (!array) {
		fprintf(stderr,"Не могу выделить память (1)\n");
		return 2;
	}
	printf("выделение памяти (2)\n");
	for (i=0;i<len;i++) {
		array[i]=(data*)malloc(sizeof(data));
		if (!array[i]) {
			fprintf(stderr,"Не могу выделить память (2)\n");
			for (i--;i>=0;i--) {
				free(array[i]);
			}
			free(array);
			return 3;
		}
	}
	printf("сортировка\n");
	qsort(array,len,sizeof(data*),f);
	printf("завершение\n");
	for (i=0;i<len;i++) {
		free(array[i]);
	}
	free(array);
	return 0;
}

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

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

%free
total used free shared buffers cached
Mem: 510012 19452 490560 0 212 4312
-/+ buffers/cache: 14928 495084
Swap: 248996 25008 223988
%time ./test 512
len=524288
sizeof(data)=1024
выделение памяти (1)
выделение памяти (2)
сортировка
завершение

real 0m48.434s
user 0m0.584s
sys 0m2.848s
%time ./test 1024
len=1048576
sizeof(data)=1024
выделение памяти (1)
выделение памяти (2)
Убито

real 0m10.657s
user 0m0.132s
sys 0m1.228s
%

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

polachok:~% ./killer 2048
len=2097152
sizeof(data)=1024
выделение памяти (1)
выделение памяти (2)
Не могу выделить память (2)
./killer 2048 0,73s user 6,37s system 14% cpu 49,781 total

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

saahriktu, ulimit -a в студию. Заодно uname -a.

И что, перед самым

>Убито

Не было никаких тормозов вообще? На машине вообще иксы подняты?

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

вас бы, товарищ, в 41-ый, когда глючило все - партия, правительство, винтовки, хреновы все остальные. Успокойтесь, вдохните глубже, выпейте слабительного. И кончайте жаловаться. у меня тут гребанов оффтопик глючит. И что? Мне что?! Нас...ть?

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

# ulimit -a
core file size (blocks, -c) 0
data seg size (kbytes, -d) unlimited
scheduling priority (-e) 0
file size (blocks, -f) unlimited
pending signals (-i) 4095
max locked memory (kbytes, -l) 32
max memory size (kbytes, -m) unlimited
open files (-n) 1024
pipe size (512 bytes, -p) 8
POSIX message queues (bytes, -q) 819200
real-time priority (-r) 0
stack size (kbytes, -s) 8192
cpu time (seconds, -t) unlimited
max user processes (-u) 4095
virtual memory (kbytes, -v) unlimited
file locks (-x) unlimited
# uname -a
Linux saahriktu 2.6.23.11 #5 SMP Tue Jan 15 10:59:31 MSK 2008 x86_64 x86_64 x86_64 GNU/Linux
---
klogd invoked oom-killer: gfp_mask=0xa00d2, order=0, oomkilladj=0

Call Trace:
[<ffffffff802533b9>] out_of_memory+0x74/0x2af
[<ffffffff802558e5>] __alloc_pages+0x270/0x2f2
[<ffffffff80223d76>] enqueue_entity+0x170/0x196
[<ffffffff80266a5c>] read_swap_cache_async+0x49/0xda
[<ffffffff8025c457>] swapin_readahead+0x5d/0xce
[<ffffffff8025de44>] handle_mm_fault+0x471/0x743
[<ffffffff80224e2d>] find_busiest_group+0x297/0x6db
[<ffffffff80534ec2>] do_page_fault+0x413/0x794
[<ffffffff8053343d>] error_exit+0x0/0x84
[<ffffffff80531c7d>] schedule_timeout+0x85/0xad
[<ffffffff8022c70a>] do_syslog+0x17c/0x39e
[<ffffffff8022c6da>] do_syslog+0x14c/0x39e
[<ffffffff8023d4b7>] autoremove_wake_function+0x0/0x2e
[<ffffffff802a95bc>] kmsg_read+0x3a/0x44
[<ffffffff802a2d9f>] proc_reg_read+0x7e/0x99
[<ffffffff80276449>] vfs_read+0xaa/0x132
[<ffffffff802767dd>] sys_read+0x45/0x6e
[<ffffffff8020b35e>] system_call+0x7e/0x83

Mem-info:
Node 0 DMA per-cpu:
CPU 0: Hot: hi: 0, btch: 1 usd: 0 Cold: hi: 0, btch: 1 usd: 0
Node 0 DMA32 per-cpu:
CPU 0: Hot: hi: 186, btch: 31 usd: 23 Cold: hi: 62, btch: 15 usd: 33
Active:61441 inactive:61211 dirty:0 writeback:0 unstable:0
free:1188 slab:2062 mapped:6 pagetables:560 bounce:0
Node 0 DMA free:2008kB min:52kB low:64kB high:76kB active:4132kB inactive:3736kB present:9352kB pages_scanned:12233 all_unreclaimable? yes
lowmem_reserve[]: 0 0 0 0
Node 0 DMA: 2*4kB 0*8kB 1*16kB 0*32kB 1*64kB 1*128kB 1*256kB 1*512kB 1*1024kB 0*2048kB 0*4096kB = 2008kB
Node 0 DMA32: 0*4kB 1*8kB 1*16kB 1*32kB 0*64kB 1*128kB 0*256kB 1*512kB 0*1024kB 1*2048kB 0*4096kB = 2744kB
Swap cache: add 1145096, delete 1145096, find 347799/399719, race 1+1
Free swap = 0kB
Total swap = 248996kB
Free swap: 0kB
131056 pages of RAM
3585 reserved pages
48 pages shared
0 pages swap cached
---
ничего руками не выставлял. небольшие тормоза были. иксов запущенных небыло.
ну дык речь-то шла об
>Могу поднатужиться и написать маленькую абсолютно стабильную програмку
>на си, которая с лёгкостью положит на лопатки любой комп.
на любом оно уже неработает ибо есть исключения

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

>у меня тут гребанов оффтопик глючит. И что? Мне что?! Нас...ть?

Нас...те, конечно. Где нибудь тут: http://www.microsoft.com/shared/core/1/webservice/navigation.asmx/DisplayDown...

ps по поводу url... да что тут говорить :) нормальный такой ынтырпрайз url

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

>на любом оно уже неработает ибо есть исключения

Учитывайте контекст беседы - десктоп. Ещё попробуйте максимальный объём, на котором программа не валится. И кто убил программу, если не ulimit? Кто-то же sigkill послал.

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

>Через libastral, что ли? :)

не, через librndmsggen.
сам пробовал-то хоть?

hzk
()

Кедофил несчастный. Ты обречён :)

Gharik
()

Стабильности хош?

Option "Composite" "false"

и

#Load "glx"

#Load "dri"

и еще можно Driver "vesa"

А то блин рознылся! Кто ж тебе поможет если ССЗБ!

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

вот сейчас еще раз запустил (: нет, сам не ставил. тормоза небольшие. иксы, естественно, работают (:

polachok:~% uname -a
Linux a1650g 2.6.22-gentoo-r10-cfs #5 PREEMPT Mon Jan 14 20:19:42 MSK 2008 i686 Mobile AMD Sempron(tm) Processor 3300+ AuthenticAMD GNU/Linux
polachok:~% ./killer 2048
len=2097152
sizeof(data)=1024
выделение памяти (1)
выделение памяти (2)
Не могу выделить память (2)
polachok:~% ulimit -a
-t: cpu time (seconds) unlimited
-f: file size (blocks) unlimited
-d: data seg size (kbytes) unlimited
-s: stack size (kbytes) 8192
-c: core file size (blocks) 0
-m: resident set size (kbytes) unlimited
-u: processes 3573
-n: file descriptors 1024
-l: locked-in-memory size (kb) 32
-v: address space (kb) unlimited
-x: file locks unlimited
-i: pending signals 3573
-q: bytes in POSIX msg queues 819200
-e: max nice 0
-r: max rt priority 0

polachok:~% uptime
23:24:34 up 2 days, 14:27, 8 users, load average: 0.80, 0.78, 0.69
polachok:~% egrep "(source|ulimit)" ~/.zshrc
polachok:~% ps aux|grep X
root 12785 3.8 1.5 19156 6892 tty7 Ss+ 22:20 2:32 /usr/bin/X :0 vt7 -auth /etc/X11/xdm/authdir/authfiles/A:0-czlW2a
polachok 14423 0.0 0.1 3132 808 pts/10 S+ 23:25 0:00 egrep --color=auto X

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

>Учитывайте контекст беседы - десктоп
это и есть десктоп. только без иксов.
>Ещё попробуйте максимальный объём, на котором программа не валится
погонял, погонял... на объёме больше оперативки, естесственно, всё свопится с тормозами.
так что точного значения не получил, но оно лежит в диапазоне 672-688
при 512-ти метрах оперативы и 243 метрах свопа
>И кто убил программу, если не ulimit? Кто-то же sigkill послал.
естесственно, ядро. ulimit всего-лишь морда к параметрам ядра.
на это указывает и то, что сообщения перед "Убито" - были сообщения ядра.
их сохранил klogd в /var/log/kern.log.

ЗЫ. прогнал софтину на PII 233 МГц, 128 метров оперативки с запущенными иксами и icewm'ом:
%free
             total       used       free     shared    buffers     cached
Mem:        127080      23348     103732          0        460       9988
-/+ buffers/cache:      12900     114180
Swap:       224900      11704     213196
%./test 128
len=131072
sizeof(data)=1024
выделение памяти (1)
выделение памяти (2)
сортировка
завершение
%ps a|grep X
 2309 ?        Ss     0:00 /usr/bin/X11/xdm
 2730 tty7     Ss+    0:06 /usr/bin/X vt7 -dpi 100 -nolisten tcp -auth /var/lib/xdm/authdir/authfiles/A:0-idLhDB
 2811 pts/0    S+     0:00 grep X

всё тормозило, но осталось живое

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

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

Это какой-то неправильный 1С. У нас единственное что не глючит, так это он, родимый. Тётки правда устраивают истерику когда на том же серваке по двое суток колбасится отчёт по интернет-трафику для всей фирмы и 1Ска начинает медленно работать. А за неработу 1С нас с коллегами просто бы поубивали с особым цинизмом.

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

>всё тормозило, но осталось живое

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

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

>> SSH cпасет отца русской демократии.

> Где же он его дома то возьмет?

Нередко и SSH не спасает, даже если он дома есть :) Я же писал выше - Linux может зависать. Именно зависать насмерть, не в свопинг уходить, не консоль терять, не сеть ронять - а просто виснуть насмерть.

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

>Я же писал выше - Linux может зависать. Именно зависать насмерть, не в свопинг уходить, не консоль терять, не сеть ронять - а просто виснуть насмерть.

Ядра небось от генты ? ;)

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

>Я не знаю, почему у некоторых товарищей тормоза не абсолютные,

Потому как ядро настроено под нормальный десктоп ;)

Это значит что вышеприведённый пример будет лениво сортировать данные в свопе при этом ни музыка в амароке ни мыша не почти не тормозят ;)

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

>Ядра небось от генты ? ;)

В Gentoo и Ubuntu картина абсолютно одинаковая. Благо, я теперь могу сравнивать :)

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

>Потому как ядро настроено под нормальный десктоп ;)

Вот смысл создания топика в том и состоит:

Как настроить ядро под нормальный десктоп?

1) ulimit

2) echo 2 > /proc/sys/vm/overcommit_memory

Что ещё?

ps при ulimit -v 786432 wine не работает:

preloader: Warning: failed to reserve range 00000000-60000000

Ошибка сегментирования

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