Свопы с KDE4

Проблемы установки, настройки и работы Правильной Операционной Системы

Модератор: terminus

Правила форума
Убедительная просьба юзать теги [cоde] при оформлении листингов.
Сообщения не оформленные должным образом имеют все шансы быть незамеченными.
Аватара пользователя
Aligarh
мл. сержант
Сообщения: 101
Зарегистрирован: 2009-10-17 23:33:35
Контактная информация:

Свопы с KDE4

Непрочитанное сообщение Aligarh » 2010-01-09 17:48:48

Есть экспериментальный сервер, на котором я изучаю и экспериментирую с FreeBSD, и храню файлы.
Иксы и KDE 4,3 скомпилены из портов, все визуальные эффекты отключены, всё работает, но проблема в том, что оператива (1 Гб всего, занято после старта KDE около 300-350) после старта постепенно заполняется, и доходит до предела. При этом начинаются жуткие свопы, с трудом открывается главное меню и даже контекстное меню, программы запускаются по 20-30 секунд, т.е. как я понимаю, все непостоянно используемые страницы памяти уходят в своп, а в памяти остаётся какой-то кэш.
Проблема была на 7.2, обновил из исходников до 8.0, проблема осталась.
top пишет:

Код: Выделить всё

last pid: 36166;  load averages:  0.76,  0.55,  0.45    up 8+22:32:01  17:34:27
97 processes:  1 running, 96 sleeping
CPU:  5.6% user,  0.0% nice,  1.7% system,  0.1% interrupt, 92.6% idle
Mem: 396M Active, 284M Inact, 263M Wired, 39M Cache, 110M Buf, 304K Free
Swap: 1995M Total, 110M Used, 1886M Free, 5% Inuse
Комп всё это время стоял и качал торренты c помощью KTorrent, а также пару раз запускался браузер Konqueror.
Перезапуск иксов не помогает - память также остаётся забитой неизвестно чем.

Собственно вопрос: что можно с этим сделать? Только не говорите, что FreeBSD не для десктопа, на Linux мне уходить не хочется, он какой-то несуразный (на нетбуке у меня стоит), да и вручную все делать интереснее.
1. Работает - не трогай.
2. Плохо работает - убедись в возможности отмены изменений.

Хостинговая компания Host-Food.ru
Хостинг HostFood.ru
 

Услуги хостинговой компании Host-Food.ru

Хостинг HostFood.ru

Тарифы на хостинг в России, от 12 рублей: https://www.host-food.ru/tariffs/hosting/
Тарифы на виртуальные сервера (VPS/VDS/KVM) в РФ, от 189 руб.: https://www.host-food.ru/tariffs/virtualny-server-vps/
Выделенные сервера, Россия, Москва, от 2000 рублей (HP Proliant G5, Intel Xeon E5430 (2.66GHz, Quad-Core, 12Mb), 8Gb RAM, 2x300Gb SAS HDD, P400i, 512Mb, BBU):
https://www.host-food.ru/tariffs/vydelennyi-server-ds/
Недорогие домены в популярных зонах: https://www.host-food.ru/domains/

Аватара пользователя
maslivets
рядовой
Сообщения: 36
Зарегистрирован: 2007-08-02 2:22:16
Откуда: Kiev
Контактная информация:

Re: Свопы с KDE4

Непрочитанное сообщение maslivets » 2010-01-09 18:43:26

хм.. сдуя по Топу у вас занято только 400 Мегов оперативы, все остальное свободно, просто зарезервировано Осю, но она весь резерв отдаст на все потребности как только потребуется.

Свопа только 110 юзается.
Когда под рукой нет ничего, кроме молотка - всё вокруг кажется гвоздями ...

Аватара пользователя
xelplogoog
мл. сержант
Сообщения: 134
Зарегистрирован: 2010-01-02 12:14:56

Re: Свопы с KDE4

Непрочитанное сообщение xelplogoog » 2010-01-09 18:47:58

ctrl + esc и скрин сюда )
/usr/ports/x11/yakuake-kde4 user

Аватара пользователя
maslivets
рядовой
Сообщения: 36
Зарегистрирован: 2007-08-02 2:22:16
Откуда: Kiev
Контактная информация:

Re: Свопы с KDE4

Непрочитанное сообщение maslivets » 2010-01-09 18:53:31

Есть один скриптик написаный на перле...

Работает как аналог софтины free под линух (хотя точно не помню)

вообщем создайте фаил в /usr/local/sbin/free

Код: Выделить всё

# touch /usr/local/sbin/free
# chmod 755 /usr/local/sbin/free
# ee /usr/local/sbin/free
и вставте туда этот текст

Код: Выделить всё

#!/usr/bin/perl

my $sysctl = {};
my $sysctl_output = `/sbin/sysctl -a`;
foreach my $line (split(/\n/, $sysctl_output)) {
    if ($line =~ m/^([^:]+):\s+(.+)\s*$/s) {
        $sysctl->{$1} = $2;
    }
}

#   round the physical memory size to the next power of two which is
#   reasonable for memory cards. We do this by first determining the
#   guessed memory card size under the assumption that usual computer
#   hardware has an average of a maximally eight memory cards installed
#   and those are usually of equal size.
sub mem_rounded {
    my ($mem_size) = @_;
    my $chip_size  = 1;
    my $chip_guess = ($mem_size / 8) - 1;
    while ($chip_guess != 0) {
        $chip_guess >>= 1;
        $chip_size  <<= 1;
    }
    my $mem_round = (int($mem_size / $chip_size) + 1) * $chip_size;
    return $mem_round;
}

#   determine the individual known information
#   NOTICE: forget hw.usermem, it is just (hw.physmem - vm.stats.vm.v_wire_count).
#   NOTICE: forget vm.stats.misc.zero_page_count, it is just the subset of
#           vm.stats.vm.v_free_count which is already pre-zeroed.
my $mem_hw        = &mem_rounded($sysctl->{"hw.physmem"});
my $mem_phys      = $sysctl->{"hw.physmem"};
my $mem_all       = $sysctl->{"vm.stats.vm.v_page_count"}      * $sysctl->{"hw.pagesize"};
my $mem_wire      = $sysctl->{"vm.stats.vm.v_wire_count"}      * $sysctl->{"hw.pagesize"};
my $mem_active    = $sysctl->{"vm.stats.vm.v_active_count"}    * $sysctl->{"hw.pagesize"};
my $mem_inactive  = $sysctl->{"vm.stats.vm.v_inactive_count"}  * $sysctl->{"hw.pagesize"};
my $mem_cache     = $sysctl->{"vm.stats.vm.v_cache_count"}     * $sysctl->{"hw.pagesize"};
my $mem_free      = $sysctl->{"vm.stats.vm.v_free_count"}      * $sysctl->{"hw.pagesize"};

#   determine the individual unknown information
my $mem_gap_vm    = $mem_all - ($mem_wire + $mem_active + $mem_inactive + $mem_cache + $mem_free);
my $mem_gap_sys   = $mem_phys - $mem_all;
my $mem_gap_hw    = $mem_hw   - $mem_phys;

#   determine logical summary information
my $mem_total = $mem_hw;
my $mem_avail = $mem_inactive + $mem_cache + $mem_free;
my $mem_used  = $mem_total - $mem_avail;

#   information annotations
my $info = {
    "mem_wire"     => 'Wired: disabled for paging out',
    "mem_active"   => 'Active: recently referenced',
    "mem_inactive" => 'Inactive: recently not referenced',
    "mem_cache"    => 'Cached: almost avail. for allocation',
    "mem_free"     => 'Free: fully available for allocation',
    "mem_gap_vm"   => 'Memory gap: UNKNOWN',
    "mem_all"      => 'Total real memory managed',
    "mem_gap_sys"  => 'Memory gap: Kernel?!',
    "mem_phys"     => 'Total real memory available',
    "mem_gap_hw"   => 'Memory gap: Segment Mappings?!',
    "mem_hw"       => 'Total real memory installed',
    "mem_used"     => 'Logically used memory',
    "mem_avail"    => 'Logically available memory',
    "mem_total"    => 'Logically total memory',
};

#   print system results
printf("SYSTEM MEMORY INFORMATION:\n");
printf("mem_wire:      %12d (%7dMB) [%3d%%] %s\n", $mem_wire,     $mem_wire     / (1024*1024), ($mem_wire     / $mem_all) * 100, $info->{"mem_wire"});
printf("mem_active:  + %12d (%7dMB) [%3d%%] %s\n", $mem_active,   $mem_active   / (1024*1024), ($mem_active   / $mem_all) * 100, $info->{"mem_active"});
printf("mem_inactive:+ %12d (%7dMB) [%3d%%] %s\n", $mem_inactive, $mem_inactive / (1024*1024), ($mem_inactive / $mem_all) * 100, $info->{"mem_inactive"});
printf("mem_cache:   + %12d (%7dMB) [%3d%%] %s\n", $mem_cache,    $mem_cache    / (1024*1024), ($mem_cache    / $mem_all) * 100, $info->{"mem_cache"});
printf("mem_free:    + %12d (%7dMB) [%3d%%] %s\n", $mem_free,     $mem_free     / (1024*1024), ($mem_free     / $mem_all) * 100, $info->{"mem_free"});
printf("mem_gap_vm:  + %12d (%7dMB) [%3d%%] %s\n", $mem_gap_vm,   $mem_gap_vm   / (1024*1024), ($mem_gap_vm   / $mem_all) * 100, $info->{"mem_gap_vm"});
printf("-------------- ------------ ----------- ------\n");
printf("mem_all:     = %12d (%7dMB) [100%%] %s\n", $mem_all,      $mem_all      / (1024*1024), $info->{"mem_all"});
printf("mem_gap_sys: + %12d (%7dMB)        %s\n",  $mem_gap_sys,  $mem_gap_sys  / (1024*1024), $info->{"mem_gap_sys"});
printf("-------------- ------------ -----------\n");
printf("mem_phys:    = %12d (%7dMB)        %s\n",  $mem_phys,     $mem_phys     / (1024*1024), $info->{"mem_phys"});
printf("mem_gap_hw:  + %12d (%7dMB)        %s\n",  $mem_gap_hw,   $mem_gap_hw   / (1024*1024), $info->{"mem_gap_hw"});
printf("-------------- ------------ -----------\n");
printf("mem_hw:      = %12d (%7dMB)        %s\n",  $mem_hw,       $mem_hw       / (1024*1024), $info->{"mem_hw"});

#   print logical results
printf("\n");
printf("SYSTEM MEMORY SUMMARY:\n");
printf("mem_used:      %12d (%7dMB) [%3d%%] %s\n", $mem_used,  $mem_used  / (1024*1024), ($mem_used  / $mem_total) * 100, $info->{"mem_used"});
printf("mem_avail:   + %12d (%7dMB) [%3d%%] %s\n", $mem_avail, $mem_avail / (1024*1024), ($mem_avail / $mem_total) * 100, $info->{"mem_avail"});
printf("-------------- ------------ ----------- ------\n");
printf("mem_total:   = %12d (%7dMB) [100%%] %s\n", $mem_total, $mem_total / (1024*1024), $info->{"mem_total"});
после чего просто с консоли запускайте

Код: Выделить всё

# free
SYSTEM MEMORY INFORMATION:
mem_wire:          80302080 (     76MB) [ 15%] Wired: disabled for paging out
mem_active:  +    299741184 (    285MB) [ 58%] Active: recently referenced
mem_inactive:+    116715520 (    111MB) [ 22%] Inactive: recently not referenced
mem_cache:   +      9994240 (      9MB) [  1%] Cached: almost avail. for allocation
mem_free:    +      5746688 (      5MB) [  1%] Free: fully available for allocation
mem_gap_vm:  +       737280 (      0MB) [  0%] Memory gap: UNKNOWN
-------------- ------------ ----------- ------
mem_all:     =    513236992 (    489MB) [100%] Total real memory managed
mem_gap_sys: +      9711616 (      9MB)        Memory gap: Kernel?!
-------------- ------------ -----------
mem_phys:    =    522948608 (    498MB)        Total real memory available
mem_gap_hw:  +     13922304 (     13MB)        Memory gap: Segment Mappings?!
-------------- ------------ -----------
mem_hw:      =    536870912 (    512MB)        Total real memory installed

SYSTEM MEMORY SUMMARY:
mem_used:         404414464 (    385MB) [ 75%] Logically used memory
mem_avail:   +    132456448 (    126MB) [ 24%] Logically available memory
-------------- ------------ ----------- ------
mem_total:   =    536870912 (    512MB) [100%] Logically total memory
Так вы сможете увидеть сколько реально у вас свободно/занято памяти.
Когда под рукой нет ничего, кроме молотка - всё вокруг кажется гвоздями ...

Аватара пользователя
MASiK
лейтенант
Сообщения: 625
Зарегистрирован: 2008-09-19 20:09:41
Откуда: Оттуда
Контактная информация:

Re: Свопы с KDE4

Непрочитанное сообщение MASiK » 2010-01-09 19:21:43

Удобный скриптик, швырнуть надо в "Полезные Скрипты"
Самурай

Аватара пользователя
Aligarh
мл. сержант
Сообщения: 101
Зарегистрирован: 2009-10-17 23:33:35
Контактная информация:

Re: Свопы с KDE4

Непрочитанное сообщение Aligarh » 2010-01-09 21:12:24

maslivets писал(а):хм.. сдуя по Топу у вас занято только 400 Мегов оперативы, все остальное свободно, просто зарезервировано Осю, но она весь резерв отдаст на все потребности как только потребуется.
Ну да, только проблема в том, что она выгружает из памяти работающие программы, и делает это в угоду кэшу.
xelplogoog писал(а):ctrl + esc и скрин сюда )
Изображение
1. Работает - не трогай.
2. Плохо работает - убедись в возможности отмены изменений.

Аватара пользователя
Aligarh
мл. сержант
Сообщения: 101
Зарегистрирован: 2009-10-17 23:33:35
Контактная информация:

Re: Свопы с KDE4

Непрочитанное сообщение Aligarh » 2010-01-11 18:26:44

Извиняюсь за искусственный подъём темы, но неужели никто не знает и ни разу не делал десктоп из фри?

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

А если я закомментирую в fstab слайс подкачки, то фря вообще загрузится? И можно ли будет её так юзать? Возможно, это решит проблему...
1. Работает - не трогай.
2. Плохо работает - убедись в возможности отмены изменений.

Аватара пользователя
Alex Keda
стреляли...
Сообщения: 35478
Зарегистрирован: 2004-10-18 14:25:19
Откуда: Made in USSR
Контактная информация:

Re: Свопы с KDE4

Непрочитанное сообщение Alex Keda » 2010-01-11 19:52:00

попробуйте
Убей их всех! Бог потом рассортирует...

Аватара пользователя
Aligarh
мл. сержант
Сообщения: 101
Зарегистрирован: 2009-10-17 23:33:35
Контактная информация:

Re: Свопы с KDE4

Непрочитанное сообщение Aligarh » 2010-01-12 0:36:37

Как ни странно комментирование свопа в fstab помогло! Программы стартуют шустро, а KTorrent мгновенно откликается на запросы даже после нескольких часов работы.
Память при этом также забилась кэшем.

Код: Выделить всё

last pid:  2007;  load averages:  0.12,  0.18,  0.16    up 0+03:24:27  00:32:16
89 processes:  1 running, 88 sleeping
CPU:  2.5% user,  0.0% nice,  2.9% system,  0.2% interrupt, 94.4% idle
Mem: 414M Active, 327M Inact, 190M Wired, 25M Cache, 110M Buf, 26M Free
Swap:
Только вот не знаю, как теперь будет вести себя система без свопа. Хватит ли 1 Гб для работы, или возможны вылеты?
1. Работает - не трогай.
2. Плохо работает - убедись в возможности отмены изменений.

Аватара пользователя
hizel
дядя поня
Сообщения: 9032
Зарегистрирован: 2007-06-29 10:05:02
Откуда: Выборг

Re: Свопы с KDE4

Непрочитанное сообщение hizel » 2010-01-12 1:03:21

Код: Выделить всё

mount -a -t ufs
и редактируйте
В дурацкие игры он не играет. Он просто жуткий, чу-чу, паровозик, и зовут его Блейн. Блейн --- это Боль.