ZFS directory with a large number of files

seanrees at gmail.com seanrees at gmail.com
Tue Aug 2 10:55:44 UTC 2011


On Tue, Aug 2, 2011 at 11:10 AM, Daniel Kalchev <daniel at digsys.bg> wrote:
>> If it is a limitation in ZFS it would be nice to know that, perhaps it
>> truly, really is a bug that can be avoided (or it's inherent in the way ZFS
>> handles such things)
>
> It is possible  that there is not enough memory in ARC to cache that large
> directory.
>
> Other than that, perhaps in ZFS it would be easier to prune the unused
> directory entries, than it is in UFS. It looks like this is not implemented.
>
> Another reason might be some FreeBSD specific implementation issue for
> fstatfs.
>
> In any case, the data available is not sufficient. More information would
> help, like how much RAM this system has, how much ARC uses, some ARC stats.

Which sysctl's would you like?

I grabbed these to start:
kstat.zfs.misc.arcstats.size: 118859656
kstat.zfs.misc.arcstats.hdr_size: 3764416
kstat.zfs.misc.arcstats.data_size: 53514240
kstat.zfs.misc.arcstats.other_size: 61581000

kstat.zfs.misc.arcstats.hits: 46762467
kstat.zfs.misc.arcstats.misses: 16999907

The machine has 2GB of memory.

> What made me wonder is .. how exactly the kernel and zpool disagree on zpool
> version? What is the pool version in fact?

% dmesg | grep ZFS
ZFS NOTICE: Prefetch is disabled by default if less than 4GB of RAM is present;
            to enable, add "vfs.zfs.prefetch_disable=0" to /boot/loader.conf.
ZFS filesystem version 5
ZFS storage pool version 28

% zpool get version tank
NAME  PROPERTY  VALUE    SOURCE
tank  version   15       local

% zpool upgrade tank
This system is currently running ZFS pool version 15.

Pool 'tank' is already formatted using the current version.


Sean


More information about the freebsd-stable mailing list