Hi,

NEC who are the contributor of ARM code, provided their outcomes
of study to us.

The size of ZFS runtime memory is measured by
- Dump content of runtime memory into file after booting
- Work it out by NEC internal tool
- Accumulate values of kmem

Without changes of disk structure, they confirmed that the
consumption of ZFS runtime memory could be reduced to 8MB.
The ARC was limited to 4MB and it was minimum value in this
case.

When the disk structure was changed as follows, further reduction
was realized. It resulted in 1MB ARC and 2MB ZFS runtime memory.

     - The size of dnode_phys_t structure was changed 512B into 256B.

       * See dnode_phys_t in uts/common/fs/zfs/sys/dnode.h
                             with uts/common/fs/czfs/sys/dnode.h
       * See blkptr_t in uts/common/fs/zfs/sys/spa.h
                             with uts/common/fs/czfs/sys/spa.h
       * See znode_phys_t in uts/common/fs/zfs/sys/zfs_znode.h
                             with uts/common/fs/czfs/sys/zfs_znode.h

       The changes resulted in disable of anti-virus function. The ACL entry
       was removed.

     - The maxmum size of block was changed 128KB into 64KB.

       * The size of Name-Value Pair List was changed 112KB into 48KB.
       * The size of Uberblock Array was changed 128K Byte into 64K Byte.
         (The size of Uberblock was changed 1K Byte into 512 Byte)

     - The maxmum size of indirect block was changed 16KB into 8KB.

It is the screen shot when OpenSolaris is booted in 16MB memory (ARC is 1MB).

     
http://www.opensolaris.org/os/project/osarm/200805/solaris_arm_16mb_boot.jpg

Thanks,

Koji Uno

Darren J Moffat wrote:
> Koji Uno wrote:
>> Hi,
>>
>> I'd just like you to know that UFS and normal ZFS are also
>> available in OpenSolaris for ARM.
> 
> That is good to know.
> 
>> The CZFS is one of challenges for the embedded systems.
>>
>> There are many requests to remove unused functions
>> in the embedded system. When it is the closed embedded
>> system, it become more strong request. The reason is
>> to reduce the costs of hardware or testing.
> 
> I fully understand the need for a low memory footprint version of ZFS 
> and in particular one that doesn't support all the features: eg no 
> RAIDZ2 no Quotas etc, no compression even, only supports limited checksums.
> 
> However that doesn't, require changing the size of fundamental on disk 
> structures like the block pointer such that  they are no longer 
> compatible with a full featured ZFS.  Is disk space for the target 
> systems really that tight that we have to squash the size of the block 
> pointer ?
> 
> The bit I'm missing about CZFS isn't the feature removal part but the 
> part that changes on disk structures such that a "normal" ZFS can't read 
> it anymore.  In other words why is this effectively a fork of the on 
> disk ZFS structure rather than a partially functioning smaller memory 
> footprint ZFS with the same on disk structure.
> 
> For example the cut down readonly ZFS that is in GRUB is a little like 
> and embedded version it has tight memory constraints and doesn't need to 
> understand all ZFS features.  It does however need to be able to read a 
> "normal" ZFS pool.  The GRUB version has restrictions though, eg no gzip 
> support.
> 

Reply via email to