k.sato
2017年6月1日 10時31分
佐藤と申します。
お世話になっております。
Armadillo-420で開発しております。
SDカードをマウントする前にfsck.vfatをしたところ
dosfsck 2.11, 12 Mar 2005, FAT32, LFN
malloc:Cannot allocate memory
となってしまいました。
SDカードが8GBだと発生し、4GBでは正常に完了します。
また同じものをArmadillo-460で動作させたところどちらのSDカードでも発生しません。
これは420のRAM領域が少ないためなのでしょうか?
現状が正確に把握できていないかもしれませんが
ご教示のほど宜しくお願いいたします。
コメント
k.sato
返信ありがとうございます。
> Armadillo-420とArmadillo-460で、
> SDカードをマウントする前後にfreeコマンドを実行してマウントすることでどの程度メモリが消費されるのかを確認し、
> 結果を比較してはいかがでしょうか?
8GBのSDカードで比較しました。
この結果から何かわかりますでしょうか?
●Armadillo420
[root@(ttymxc1) ~]# free
total used free shared buffers
Mem: 61440 34940 26500 0 296
Swap: 0 0 0
Total: 61440 34940 26500
[root@ (ttymxc1) ~]# fsck.vfat -a /dev/mmcblk0p1
dosfsck 2.11, 12 Mar 2005, FAT32, LFN
malloc:Cannot allocate memory
[root@(ttymxc1) ~]# free
total used free shared buffers
Mem: 61440 33668 27772 0 176
Swap: 0 0 0
Total: 61440 33668 27772
[root@(ttymxc1) ~]# mount -t vfat /dev/mmcblk0p1 /home/ftp/pub/
[root@(ttymxc1) ~]# free
total used free shared buffers
Mem: 61440 42320 19120 0 7792
Swap: 0 0 0
Total: 61440 42320 19120
●Armadillo460
[root@ (ttymxc1) ~]# free
total used free shared buffers
Mem: 126720 38404 88316 0 332
Swap: 0 0 0
Total: 126720 38404 88316
[root@ (ttymxc1) ~]# fsck.vfat -a /dev/mmcblk0p1
dosfsck 2.11, 12 Mar 2005, FAT32, LFN
/dev/mmcblk0p1: 139 files, 12460/1940480 clusters
[root@ (ttymxc1) ~]# free
total used free shared buffers
Mem: 126720 38376 88344 0 332
Swap: 0 0 0
Total: 126720 38376 88344
[root@ (ttymxc1) ~]# mount -t vfat /dev/mmcblk0p1 /home/ftp/pub/
[root@ (ttymxc1) ~]# free
total used free shared buffers
Mem: 126720 46860 79860 0 7944
Swap: 0 0 0
Total: 126720 46860 79860
at_kojiro.yamada
申し訳ありません。マウントではなくてfsckでしたね。
先にお伝えした方法だとfsck.vfatがどれくらいメモリを必要としていたのかわからないので別の方法を考えます。
Armadillo-420にUSBメモリを接続してUSBメモリ上にswap領域を作成するのはいかがでしょうか?
swap領域を作成して動作するようになるなら、メモリが足りなくて動作できなかったのだと考えられます。
swap領域の作成手順は以下が参考になります。
https://users.atmark-techno.com/comment/1364#comment-1364
k.sato
> Armadillo-420にUSBメモリを接続してUSBメモリ上にswap領域を作成するのはいかがでしょうか?
> swap領域を作成して動作するようになるなら、メモリが足りなくて動作できなかったのだと考えられます。
USBメモリ上にswap領域を作成してfsckを行ってみました。
fsck.vfatでmalloc:Cannot allocate memoryと変わりません。
swap領域は動作していそうなのですが。
[root@(ttymxc1) /mnt]# free
total used free shared buffers
Mem: 61440 33436 28004 0 136
Swap: 0 0 0
Total: 61440 33436 28004
[root@(ttymxc1) /mnt]# mount
/dev/ram0 on / type ext2 (rw)
proc on /proc type proc (rw)
usbfs on /proc/bus/usb type usbfs (rw)
sysfs on /sys type sysfs (rw)
udev on /dev type tmpfs (rw)
/dev/sda1 on /mnt type ext3 (rw,errors=continue,data=ordered)
[root@(ttymxc1) /mnt]# dd if=/dev/zero of=swap bs=1024 count=256
256+0 records in
256+0 records out
[root@(ttymxc1) /mnt]# mkswap swap
Setting up swapspace version 1, size = 258048 bytes
[root@(ttymxc1) /mnt]# swapon swap
Adding 248k swap on swap. Priority:-2 extents:2 across:252k
[root@ (ttymxc1) /mnt]# free
total used free shared buffers
Mem: 61440 33856 27584 0 196
Swap: 248 0 248
Total: 61688 33856 27832
[root@(ttymxc1) /mnt]# fsck.vfat -a /dev/mmcblk0p1
dosfsck 2.11, 12 Mar 2005, FAT32, LFN
malloc:Cannot allocate memory
[root@(ttymxc1) /mnt]# free
total used free shared buffers
Mem: 61440 33076 28364 0 64
Swap: 248 4 244
Total: 61688 33080 28608
at_kojiro.yamada
>
> > Armadillo-420にUSBメモリを接続してUSBメモリ上にswap領域を作成するのはいかがでしょうか?
> > swap領域を作成して動作するようになるなら、メモリが足りなくて動作できなかったのだと考えられます。
>
> USBメモリ上にswap領域を作成してfsckを行ってみました。
> fsck.vfatでmalloc:Cannot allocate memoryと変わりません。
> swap領域は動作していそうなのですが。
最初に確認していただきましたが、
Armadillo-460ではfsck.vfat実行前のメモリの空き容量が 90 [MB] ほどありましたので、
作成したswapのサイズ(1024 * 256 = 256 [KB])では
容量が足りない可能性があります。
swapのサイズを100[MB]にしても同じ結果になるでしょうか?
k.sato
> 最初に確認していただきましたが、
> Armadillo-460ではfsck.vfat実行前のメモリの空き容量が 90 [MB] ほどありましたので、
> 作成したswapのサイズ(1024 * 256 = 256 [KB])では
> 容量が足りない可能性があります。
>
> swapのサイズを100[MB]にしても同じ結果になるでしょうか?
すみません、dd if=/dev/zero of=swapの確認で小さいサイズのままでした。
swapのサイズを100[MB]に変更したところfsckが正常に完了しました。
[root@(ttymxc1) /mnt]# free total used free shared buffers Mem: 61440 59696 1744 0 288 Swap: 124992 0 124992 Total: 186432 59696 126736 [root@(ttymxc1) /mnt]# fsck.vfat -a /dev/mmcblk0p1 dosfsck 2.11, 12 Mar 2005, FAT32, LFN /dev/mmcblk0p1: 165 files, 13529/1940480 clusters [root@(ttymxc1) /mnt]# free total used free shared buffers Mem: 61440 33012 28428 0 156 Swap: 124992 2104 122888 Total: 186432 35116 151316
RAM diskに余裕があるので、RAM diskのサイズを下げるのがよいのでしょうか?
良い方法があればお願い致します。
[root@(ttymxc1) /mnt]# df Filesystem 1k-blocks Used Available Use% Mounted on /dev/ram0 25327 13505 10542 56% / udev 30720 4 30716 0% /dev /dev/sda1 991752 141556 799816 15% /mnt
k.sato
佐藤です。
お世話になっております。
[root@(ttymxc1) ~]# df Filesystem 1k-blocks Used Available Use% Mounted on /dev/ram0 15235 12980 1480 90% / udev 30720 4 30716 0% /dev /dev/mmcblk0p1 7761920 438944 7322976 6% /home/ftp/pub
RAM diskの容量を下げて電源の入り切りを繰り返してみました。
大体は正常にfsck.vfatが通り下記のようになるのですが
login: dosfsck 2.11, 12 Mar 2005, FAT32, LFN /dev/mmcblk0p1: 2238 files, 405940/1964800 clusters
たまに下記のようなメッセージが発生しプロセスが落ちてしまいます。
何か対策の方法はありますでしょうか?
login: udevd invoked oom-killer: gfp_mask=0x1200d2, order=0, oomkilladj=-17 [<c02a40c0>] (dump_stack+0x0/0x14) from [<c0075514>] (oom_kill_process+0x7c/0x1cc) [<c0075498>] (oom_kill_process+0x0/0x1cc) from [<c0075cb8>] (out_of_memory+0x188/0x250) [<c0075b30>] (out_of_memory+0x0/0x250) from [<c0078e84>] (__alloc_pages_internal+0x3f0/0x428) [<c0078a94>] (__alloc_pages_internal+0x0/0x428) from [<c0078ee4>] (__alloc_pages+0x14/0x18) [<c0078ed0>] (__alloc_pages+0x0/0x18) from [<c00823ec>] (do_wp_page+0xd4/0x698) [<c0082318>] (do_wp_page+0x0/0x698) from [<c00830a0>] (handle_mm_fault+0x210/0x750) [<c0082e90>] (handle_mm_fault+0x0/0x750) from [<c002dcc4>] (do_page_fault+0x1b4/0x25c) [<c002db10>] (do_page_fault+0x0/0x25c) from [<c0028260>] (do_DataAbort+0x3c/0xa0) [<c0028224>] (do_DataAbort+0x0/0xa0) from [<c0028b00>] (ret_from_exception+0x0/0x10) Exception stack(0xc3529fb0 to 0xc3529ff8) 9fa0: 0008b400 0002178c 0002178f 00000000 9fc0: 00000008 401494c8 be845618 00000000 00021378 00021a0c 0002178c be845614 9fe0: 00000000 be844cf8 400bdbd0 400bdbe0 00000010 ffffffff Mem-info: DMA per-cpu: CPU 0: hi: 0, btch: 1 usd: 0 Normal per-cpu: CPU 0: hi: 18, btch: 3 usd: 7 Active:10103 inactive:59 dirty:0 writeback:0 unstable:0 free:303 slab:771 mapped:0 pagetables:82 bounce:0 DMA free:392kB min:188kB low:232kB high:280kB active:7496kB inactive:0kB present:12192kB pages_scanned:16580 all_unreclaimable? yes lowmem_reserve[]: 0 51 51 Normal free:820kB min:824kB low:1028kB high:1236kB active:32916kB inactive:236kB present:52832kB pages_scanned:103825 all_unreclaimable? yes lowmem_reserve[]: 0 0 0 DMA: 0*4kB 1*8kB 0*16kB 0*32kB 2*64kB 0*128kB 1*256kB 0*512kB 0*1024kB 0*2048kB 0*4096kB = 392kB Normal: 15*4kB 3*8kB 0*16kB 1*32kB 1*64kB 1*128kB 0*256kB 1*512kB 0*1024kB 0*2048kB 0*4096kB = 820kB 59 total pagecache pages Swap cache: add 0, delete 0, find 0/0 Free swap = 0kB Total swap = 0kB 16384 pages of RAM 396 free pages 1052 reserved pages 771 slab pages 83 pages shared 0 pages swap cached Out of memory: kill process 415 (busybox) score 67 or a child Killed process 415 (busybox)
k.sato
at_kojiro.yamada
2017年6月1日 19時28分
> 佐藤と申します。
> お世話になっております。
>
> Armadillo-420で開発しております。
> SDカードをマウントする前にfsck.vfatをしたところ
> dosfsck 2.11, 12 Mar 2005, FAT32, LFN
> malloc:Cannot allocate memory
> となってしまいました。
>
> SDカードが8GBだと発生し、4GBでは正常に完了します。
> また同じものをArmadillo-460で動作させたところどちらのSDカードでも発生しません。
>
> これは420のRAM領域が少ないためなのでしょうか?
>
>
> 現状が正確に把握できていないかもしれませんが
> ご教示のほど宜しくお願いいたします。
Armadillo-420とArmadillo-460で、
SDカードをマウントする前後にfreeコマンドを実行してマウントすることでどの程度メモリが消費されるのかを確認し、
結果を比較してはいかがでしょうか?