Page 1 of 3 123 LastLast
Results 1 to 15 of 55

Thread: Ошибка "page allocation failure" на прошивках RT-N16-1.9.2.7-rtn

Hybrid View

Previous Post Previous Post   Next Post Next Post
  1. #1

    Exclamation Ошибка "page allocation failure" на прошивках RT-N16-1.9.2.7-rtn

    Коллеги, время от времени на форуме всплывают сообщения об ошибке kernel: swapper: page allocation failure.
    Code:
    Oct  2 23:10:21 kernel: swapper: page allocation failure. order:3, mode:0x4020
    Oct  2 23:10:21 kernel: Call Trace:
    Oct  2 23:10:21 kernel: [<8000de20>] dump_stack+0x8/0x34
    Oct  2 23:10:21 kernel: [<8005914c>] __alloc_pages+0x294/0x344
    Oct  2 23:10:21 kernel: [<80077438>] __slab_alloc+0x1d8/0x4b8
    Oct  2 23:10:21 kernel: [<80077a34>] __kmalloc_track_caller+0x144/0x184
    Oct  2 23:10:21 kernel: [<801a8a30>] __alloc_skb+0x70/0x140
    Oct  2 23:10:21 kernel: [<8020badc>] tcp_collapse+0x214/0x468
    Oct  2 23:10:21 kernel: [<8020be80>] tcp_prune_queue+0x150/0x340
    Oct  2 23:10:21 kernel: [<8020c778>] tcp_data_queue+0x708/0xe10
    Oct  2 23:10:21 kernel: [<8020e594>] tcp_rcv_established+0x224/0xc00
    Oct  2 23:10:21 kernel: [<802167dc>] tcp_v4_do_rcv+0xe8/0x450
    Oct  2 23:10:21 kernel: [<80217598>] tcp_v4_rcv+0xa54/0xb38
    Oct  2 23:10:21 kernel: [<801f5604>] ip_local_deliver+0x1e8/0x318
    Oct  2 23:10:21 kernel: [<801f4810>] ip_rcv_finish+0x1d0/0x464
    Oct  2 23:10:21 kernel: [<801db934>] nf_reinject+0x11c/0x2b8
    Oct  2 23:10:21 kernel: [<c014e1ec>] imq_dev_xmit+0x50/0x60 [imq]
    Oct  2 23:10:21 kernel: [<801c1958>] qdisc_restart1+0xb4/0x21c
    Oct  2 23:10:21 kernel: [<c014e360>] imq_nf_queue+0x164/0x264 [imq]
    Oct  2 23:10:21 kernel: [<801db608>] __nf_queue+0x17c/0x38c
    Oct  2 23:10:21 kernel: [<801dab20>] nf_hook_slow+0xe0/0x160
    Oct  2 23:10:21 kernel: [<801f4d54>] ip_rcv+0x2b0/0x720
    Oct  2 23:10:21 kernel: [<801afaa4>] process_backlog+0xf0/0x220
    Oct  2 23:10:21 kernel: [<801ad1b0>] net_rx_action+0xb4/0x21c
    Oct  2 23:10:21 kernel: [<8002d28c>] __do_softirq+0x88/0x11c
    Oct  2 23:10:21 kernel: [<8002d38c>] do_softirq+0x6c/0x74
    Oct  2 23:10:21 kernel: [<80007614>] plat_irq_dispatch+0x14c/0x1b8
    Oct  2 23:10:21 kernel: [<80007d6c>] ret_from_irq+0x0/0x4
    Oct  2 23:10:21 kernel: [<80009d1c>] cpu_idle+0x1c/0x50
    Oct  2 23:10:21 kernel: [<80328c00>] start_kernel+0x2e8/0x344
    Oct  2 23:10:21 kernel: Mem-info:
    Oct  2 23:10:21 kernel: Normal per-cpu:
    Oct  2 23:10:21 kernel: CPU    0: Hot: hi:   42, btch:   7 usd:   3   Cold: hi:   14, btch:   3 usd:   6
    Oct  2 23:10:21 kernel: Active:14580 inactive:10447 dirty:1524 writeback:0 unstable:0
    Oct  2 23:10:21 kernel:  free:2544 slab:1628 mapped:2695 pagetables:128 bounce:0
    Oct  2 23:10:21 kernel: Normal free:10176kB min:1440kB low:1800kB high:2160kB active:58320kB inactive:41788kB present:130048kB pages_scanned:0 all_unreclaimable? no
    Oct  2 23:10:21 kernel: lowmem_reserve[]: 0
    Oct  2 23:10:21 kernel: Normal: 0*4kB 654*8kB 305*16kB 0*32kB 1*64kB 0*128kB 0*256kB 0*512kB 0*1024kB 0*2048kB 0*4096kB = 10176kB
    Oct  2 23:10:21 kernel: Swap cache: add 0, delete 0, find 0/0, race 0+0
    Oct  2 23:10:21 kernel: Free swap  = 0kB
    Oct  2 23:10:21 kernel: Total swap = 0kB
    Oct  2 23:10:21 kernel: Free swap:            0kB
    Oct  2 23:10:21 kernel: 32768 pages of RAM
    Oct  2 23:10:21 kernel: 0 pages of HIGHMEM
    Oct  2 23:10:21 kernel: 1132 reserved pages
    Oct  2 23:10:21 kernel: 22161 pages shared
    Oct  2 23:10:21 kernel: 0 pages swap cached
    Условия возникновения ошибки:
    • прошивка RT-N16-1.9.2.7-rtn-rXXXX,
    • использание роутера для скачивания торрентов,
    • скорость скачивания >~200KB/s.


    Использование свопа от ошибки не избаваляет. При возникновении ошибки ряд скачанных файлов оказываются "битыми". Причём ошибки возникают как при использовании rtorrent, так и при использовании transmission. В момент воспроизведения проблемы роутер не тормозит - ни в WEB-интерфейсе, ни в консоли. Единственное, что можно зафиксировать - это жутко долгое выполнение любой операции, связанной с чтением/записью на диск при скачивании торрентов.

    Число открытых дискрипторов для файловой системы диска:
    Code:
    $ lsof +D /tmp/harddisk/ | wc -l
    287
    Из них открыто на запись:
    Code:
    $ lsof +D /tmp/harddisk/ | grep "w " | wc -l
    2
    Дерево процессов:
    Code:
    $ ps afx
      PID TTY      STAT   TIME COMMAND
        2 ?        S<     0:00 [kthreadd]
        5 ?        S<     0:00  \_ [khelper]
        4 ?        S<     0:00  \_ [events/0]
        3 ?        RN     0:00  \_ [ksoftirqd/0]
       24 ?        S<     0:00  \_ [kblockd/0]
       52 ?        S<     0:00  \_ [kswapd0]
       53 ?        S<     0:00  \_ [aio/0]
       51 ?        S      0:00  \_ [pdflush]
       50 ?        S      0:00  \_ [pdflush]
      105 ?        S<     0:01  \_ [mtdblockd]
      238 ?        S<     0:00  \_ [khubd]
      297 ?        S<     0:00  \_ [scsi_eh_0]
      298 ?        D<     0:00  \_ [usb-storage]
      336 ?        S<     0:05  \_ [kl2tpd/0]
      385 ?        D<     0:00  \_ [kjournald]
        1 ttyS0    Ss+    0:00 /sbin/init
      199 ?        Ss     0:00 syslogd -m 0 -O /tmp/syslog.log -S -D -l 7 -b 1
      202 ?        Ss     0:00 klogd
      205 ?        S      0:00 nas
      209 ?        Ss     0:00 telnetd
      213 ?        S      0:00 dropbear -p 22 -4
      594 ?        Ss     0:00  \_ dropbear -p 22 -4
      595 pts/0    Ss     0:00  |   \_ -sh
      596 pts/0    S+     0:07  |       \_ top
     1270 ?        Ss     0:00  \_ dropbear -p 22 -4
     1362 pts/1    Ss     0:00      \_ -sh
     1660 pts/1    R+     0:00          \_ ps afx
      216 ?        S      0:00 httpd vlan2
      221 ?        S      0:00 dnsmasq
      245 ?        S      0:00 lld2d br0 eth1
      327 ?        Ss     0:00 udhcpc -i vlan2 -p /var/run/udhcpc0.pid -s /tmp/udhcp
      330 ?        S      0:00 l2tpd
      337 ?        S      0:00  \_ pppd sync nodetach noaccomp nobsdcomp nodeflate n
      334 ?        Ss     0:00 watchdog
      366 ?        S      0:00 upnp -D -L br0 -W ppp0
      388 ?        Ss     0:00 /usr/sbin/vsftpd
      390 ?        Ss     0:00 /usr/sbin/nmbd -D
      392 ?        Ss     0:00 /usr/sbin/smbd -D
      404 ?        Ss     0:00 cron
      548 ?        S      0:00 /opt/bin/bash /opt/bin/dlengine
     1662 ?        S      0:00  \_ sleep 30
      559 ?        S<     0:00 lighttpd -f /opt/etc/lighttpd/lighttpd.conf
      560 ?        S<s    0:00  \_ /opt/bin/php-fcgi
      573 ?        S<     0:00      \_ /opt/bin/php-fcgi
      574 ?        S<     0:00      \_ /opt/bin/php-fcgi
      571 ?        S<s    0:00 darkstat -i ppp0 -p 667 --chroot /opt/var/log
      572 ?        S<s    0:00  \_ darkstat -i ppp0 -p 667 --chroot /opt/var/log
      585 ?        S      0:00 transmission-daemon -g /opt/etc/transmission
      586 ?        S      0:00  \_ transmission-daemon -g /opt/etc/transmission
      587 ?        D      0:25      \_ transmission-daemon -g /opt/etc/transmission
      588 ?        S      0:00      \_ transmission-daemon -g /opt/etc/transmission
    Мои догадки: в какой-то момент память RAM лавинообразно заполняется, а swapper не успевает выделить нужный объём памяти на диске. Это видно по приложенному графику: в 21:40 было снято ограничение на скорость скачивания торрента, а в 21:50 посыпались ошибки в syslog'е.

    Если оценить скорость ввода-вывода на диск:
    Code:
    $ dd if=/dev/discs/disca/part1  of=/dev/null count=512K
    524288+0 records in
    524288+0 records out
    268435456 bytes (268 MB) copied, 34,892 s, 7,7 MB/s
    
    $ dd if=/dev/zero  of=/tmp/harddisk/backup/nonsense.swp  count=512K
    524288+0 records in
    524288+0 records out
    268435456 bytes (268 MB) copied, 116,384 s, 2,3 MB/s
    то она окажется меньше, чем пиковая скорость скачивания торрента по графикам rrd.

    Пробовал воспроизвести ситуацию с помощью wget, скачивая с ПК большие файлы, но не смог получить wget'ом скорость скачивания большую, чем максимальная скорость записи на диск. wget оказался умнее меня?

    Линуксоиды, есть мнение, что wget не скачивает быстрее, чем может записать на диск, используя алгоритм "скачал блок - записал блок". А вот торрент-клиенты такой логики лишены. Как мне подтвердить свои догадки?
    Last edited by ryzhov_al; 18-05-2012 at 06:13. Reason: Перенёс картинку на хостинг radikal.ru

  2. #2
    Так же всплывают и ответы

    Надо увеличить /proc/sys/vm/min_free_kbytes...
    У меня 16384, и ошибок нет.

  3. #3
    Спасибо за совет. Настройки по умолчанию:
    Code:
    $ cat /proc/sys/vm/swappiness
    60
    $ cat /proc/sys/vm/min_free_kbytes
    1442
    Увеличил min_free_kbytes до 16384, проверю в работе.

    Однако два вопроса всё равно остались.

    Насколько я для себя выяснил, rtorrent использует memory mapping. Получается, файлы напрямую отображаются в память, а за ввод-вывод на диск отвечают исключительно функции\алгоритмы ядра. Как бы не старался Linux VM, если скорость скачивания заметно превышает скорость записи на диск, то kswapd\pdflush просто не успеют ничего выгрузить на диск. Linux VM мы параметром min_free_kbytes подкрутили, но в случае, описанном постом выше засада всё равно возникнет?

    Почему ошибка page allocation failure у меня никогда не возникала на ядрах 2.4?

  4. #4
    Quote Originally Posted by ryzhov_al View Post
    Почему ошибка page allocation failure у меня никогда не возникала на ядрах 2.4?
    регулярно на 2,4. Правда, на wl500gp1

  5. #5
    Quote Originally Posted by Pablo Escobar View Post
    регулярно на 2,4. Правда, на wl500gp1
    Угу. При упоминании ядра 2.4 имелось в виду устройство wl-500g premium v1 128mb.

  6. #6
    Quote Originally Posted by ryzhov_al View Post
    Угу. При упоминании ядра 2.4 имелось в виду устройство wl-500g premium v1 128mb.
    у меня по симптоматике бывает два варианта:
    - отваливается dropbear, web-морда и интернет;
    - отваливается только dropbear и web-морда.

    Судя по тому, что в три часа ночи туда льется бэкап (NFS), и логи такие же, а с утра в подавляющем полшинстве случаев все работает (битые торренты иногда присутствуют), ваша идея ram-swapper сильно правдоподобна.

  7. #7
    Тоже регулярно вываливается ошибка ядра.
    Роуетер RT-N16, transmission.
    Своп не включал, разве 128 мб памяти мало, чтобы обойтись без свопа?

  8. #8
    Join Date
    Aug 2008
    Location
    Taganrog, Rostov Region
    Posts
    397
    Quote Originally Posted by ryzhov_al View Post
    Увеличил min_free_kbytes до 16384, проверю в работе.
    А как это делается?
    (В смысле увеличение min_free_kbytes)
    [ASUS wl-500gP (v1) 1.9.2.7-rtn-r7438M 128Mb 300MHz 2+2usb] + [2Гб USBFlash] + [USB-HDD] + [xinetd] + [samba3] + [Download Engine] + [rTorrent] + [3proxy] + [nShaper] + [mcabber] + [apcupsd] + [mpd]; Было: [openvpn&udhcpc]; [privoxy] + [polipo];

  9. #9
    Либо где-нибудь в post-boot
    Code:
    echo 16384 > /proc/sys/vm/min_free_kbytes
    либо через sysctl в стартовых скриптах.
    Last edited by ryzhov_al; 09-10-2010 at 19:01. Reason: spell check: cat -> echo

  10. #10
    Join Date
    Aug 2008
    Location
    Taganrog, Rostov Region
    Posts
    397
    Quote Originally Posted by ryzhov_al View Post
    Либо где-нибудь в post-boot
    Code:
    cat 16384 > /proc/sys/vm/min_free_kbytes
    после перегрузки параметр не изменился.
    А если выполнить это в putty то получаю:
    Code:
    cat 16384 > /proc/sys/vm/min_free_kbytes
    16384: No such file or directory
    Где собака зарыта?
    [ASUS wl-500gP (v1) 1.9.2.7-rtn-r7438M 128Mb 300MHz 2+2usb] + [2Гб USBFlash] + [USB-HDD] + [xinetd] + [samba3] + [Download Engine] + [rTorrent] + [3proxy] + [nShaper] + [mcabber] + [apcupsd] + [mpd]; Было: [openvpn&udhcpc]; [privoxy] + [polipo];

  11. #11
    Quote Originally Posted by ryzhov_al View Post
    Либо где-нибудь в post-boot
    Code:
    echo 16384 > /proc/sys/vm/min_free_kbytes
    А для wl500gp v.1 с памятью 32 МБ сколько можно установить min_free_kbytes?

  12. #12
    Quote Originally Posted by ryzhov_al View Post
    Спасибо за совет. Настройки по умолчанию:
    Code:
    $ cat /proc/sys/vm/swappiness
    60
    $ cat /proc/sys/vm/min_free_kbytes
    1442
    Увеличил min_free_kbytes до 16384, проверю в работе.

    Однако два вопроса всё равно остались.

    Насколько я для себя выяснил, rtorrent использует memory mapping. Получается, файлы напрямую отображаются в память, а за ввод-вывод на диск отвечают исключительно функции\алгоритмы ядра. Как бы не старался Linux VM, если скорость скачивания заметно превышает скорость записи на диск, то kswapd\pdflush просто не успеют ничего выгрузить на диск. Linux VM мы параметром min_free_kbytes подкрутили, но в случае, описанном постом выше засада всё равно возникнет?

    Почему ошибка page allocation failure у меня никогда не возникала на ядрах 2.4?
    Просьба погонять маршрутизатор на тестах. В архиве обычный STREAM на 45 МБ, а также простые многопотоковые тесты для создания нагрузки со случайным доступом. Соответственно на 10, 100 и 128 МБ. Последний гарантированно вызывает свопинг на RT-N16. Всё с исходниками. Если есть желание, можно попробовать изменить количество потоков и объем выделяемой памяти.

    PS: основная задача - добиться устойчивой ошибки без использования торрентов.
    Attached Files Attached Files
    Last edited by rss; 10-10-2010 at 20:08.
    * Wiki *

  13. #13
    А что делать есть валится с ошибкой
    "kernel: swapper: page allocation failure. order:3, mode:0x4020"
    НО, сам роутер торренты не раздает.
    По ssh зайти на него смог, по top памяти свободно было 108мб.

    Торренты раздаются за роутером.
    NAS Synology ds210j (Transmission 2.11) - 17 торрентов (максимум 300 коннектов разрешено, не более 20 на торрент)

    Ноут Dell XPS m1330a (Transmission 2.12) - 156 торрентов (аналогично максимум 300 пиров разрешено и не более 20 на торрент).

    Что было сделано:
    отключил UPnP на роутере.
    Пробросил на каждый торрент-клиент 1 порт. и его же прописал в настройках клиента.

    через полтора часа снова упал.
    Прошивки пробовал почти все. Сбрасывал в дефолт и настраивал заново.
    в данный момент тестирую 2308.

    Приложу syslog.
    Attached Files Attached Files
    Last edited by sht0rm; 31-10-2010 at 09:47.

  14. #14
    Quote Originally Posted by rss View Post
    Просьба погонять маршрутизатор на тестах. В архиве обычный STREAM на 45 МБ, а также простые многопотоковые тесты для создания нагрузки со случайным доступом. Соответственно на 10, 100 и 128 МБ. Последний гарантированно вызывает свопинг на RT-N16. Всё с исходниками. Если есть желание, можно попробовать изменить количество потоков и объем выделяемой памяти.

    PS: основная задача - добиться устойчивой ошибки без использования торрентов.
    Погонял, в том числе с торрентами, никаких ошибок при установленном параметре vm.min_free_kbytes=10240 нет. Использовал скрипт:
    Code:
    $ cat /tmp/harddisk/tmp/mem_load.sh
    #!/bin/sh
    echo Time [HH:MM:SS], Free RAM [MB], Free Swap [MB] > /tmp/mem_heartbeat.csv
    for seconds in `seq 1 180`;
     do
      echo `date +%H:%M:%S`, `cat /proc/meminfo | grep ^MemFree | gawk '{print $2}'`, `cat /proc/meminfo | grep ^SwapFree | gawk '{print $2}'` >> /tmp/mem_heartbeat.csv
      case "$seconds" in
       20) /tmp/harddisk/tmp/memtest10 & ;;
       40) killall memtest10 & ;;
       60) /tmp/harddisk/tmp/memtest100 & ;;
       80) killall memtest100 & ;;
       100) /tmp/harddisk/tmp/memtest & ;;
       120) killall memtest & ;;
      esac
      sleep 1s
    
    $ nice -20 /tmp/harddisk/tmp/mem_load.sh
    Пояснения к графику:
    • в 21:40:41 запуск memtest10,
    • в 21:41:11 остановка memtest10,
    • в 21:41:33 запуск memtest100,
    • в 21:42:40 остановка memtest100,
    • в 21:42:40 запуск memtest,
    • в 21:43:28 остановка memtest.
    Last edited by ryzhov_al; 18-05-2012 at 06:27.

  15. #15
    Quote Originally Posted by ryzhov_al View Post
    Погонял, в том числе с торрентами, никаких ошибок при установленном параметре vm.min_free_kbytes=10240 нет.
    Спасибо за информацию. Только для memtest со 128-ю МБ может быть маловато 50 секунд. А со значением vm.min_free_kbytes по-умолчанию всё работает?

    Если сбоев не будет, значит надо другой тест подбирать.
    * Wiki *

Page 1 of 3 123 LastLast

Similar Threads

  1. New oleg firmware version
    By Lesiuk in forum WL-500gP Firmware Discussion
    Replies: 713
    Last Post: 13-05-2016, 04:55
  2. Kernel-Mitteilung (alloc_pages...) - was bedeutet das?
    By wolder in forum German Discussion - Deutsch (DE)
    Replies: 6
    Last Post: 13-09-2010, 15:06
  3. Firmware 1.9.2.7 CR9
    By Oleg in forum WL-500g Firmware Releases
    Replies: 53
    Last Post: 13-04-2009, 14:28
  4. my configuration page wont let me log in
    By tuepen in forum WL-700g Q&A
    Replies: 1
    Last Post: 06-08-2008, 03:04

Tags for this Thread

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •