On 05/12/13 18:46, Charles Manning wrote: > On Friday 06 December 2013 01:27:09 Dominic Raferd wrote: >> I am responsible for a PBX system which uses embedded uClinux on 256MB >> internal memory disk, this uses YAFFS2 filesystem and it is rapidly running >> out of memory. df used space is 240MB (96% of total) and du used space is >> 76MB. Once df gets to 100% used I guess the whole system will fail and be >> irrecoverable. I don't understand much about YAFFS but here is some info: >> >> root@G-124:~# cat /proc/yaffs >> YAFFS built:Apr 22 2010 11:02:12 >> $Id: yaffs_fs.c,v 1.89 2009-11-29 21:50:10 charles Exp $ >> $Id: yaffs_guts.c,v 1.98 2009-12-07 01:17:33 charles Exp $ >> >> >> Device 0 "file system" >> startBlock......... 0 >> endBlock........... 1951 >> totalBytesPerChunk. 2048 >> nDataBytesPerChunk. 2048 >> chunkGroupBits..... 0 >> chunkGroupSize..... 1 >> nErasedBlocks...... 63 >> nReservedBlocks.... 5 >> blocksInCheckpoint. 0 >> nTnodesCreated..... 97500 >> nFreeTnodes........ 41 >> nObjectsCreated.... 96700 >> nFreeObjects....... 92 >> nFreeChunks........ 8822 >> nPageWrites........ 8033 >> nPageReads......... 89169 >> nBlockErasures..... 180 >> nGCCopies.......... 4471 >> garbageCollections. 72 >> passiveGCs......... 0 >> nRetriedWrites..... 0 >> nShortOpCaches..... 10 >> nRetireBlocks...... 0 >> eccFixed........... 0 >> eccUnfixed......... 0 >> tagsEccFixed....... 0 >> tagsEccUnfixed..... 0 >> cacheHits.......... 20 >> nDeletedFiles...... 0 >> nUnlinkedFiles..... 56 >> nBackgroudDeletions 0 >> useNANDECC......... 1 >> noTagsECC.......... 0 >> isYaffs2........... 1 >> inbandTags......... 0 >> emptyLostAndFound.. 0 >> disableLazyLoad.... 0 >> >> (The mounting memory loss may be related to frequent power cuts. Is there >> anything that can be done to recover the lost memory (currently 164MB) >> before the system fails entirely? >> >> I would be very grateful for some urgent help/input, and can pay something >> for a positive resolution. (The PBX box also has an attached USB drive >> (8GB) but although this is working fine I don't believe the system can boot >> from here, and it has no local interface, only via ethernet.) > Hello Dominic > > If you have a wide disparity between du and df this typically means that you > have lots of small files. > > du just adds up file contents and such to estimate space used with no > knowledge of file system layout. It makes various guesses. df asks the file > system what space is in use so that is a more accurate value. > > If you store a 1-byte file in Yaffs you will end up with: > 1x object header chunk + 1x data chunk = 2 chunks = 4k on your system. > > However that overhead is fixed, so if you have a 1MB file, it just takes up > 1MB + 1x object header chunk = 1MB + 2048 bytes. > > So... what are you storing that you can get rid of? > > Thanks for the response Charles. But there are very few small files in this system. If I mount this boot device at /tmp/mnt/mtdblock1: # find /tmp/mnt/mtdblock1 -size -10c|wc -l 87 # find /tmp/mnt/mtdblock1 -size -100c|wc -l 281