我有一台运行ZFS的Solaris 11.2服务器,其配置如下:
6x 4TB HDDs in raidz2 (approx 14TB usable)
16GB RAM (ECC)
E5-2670 (16 cores)
No ARC or L2ARC
No zfs settings tweaks
在iozone
和实际使用情况下,读取和写入性能都非常快,超过700MB/sec
次序。
然而,元数据读取非常缓慢。例如,我有一个包含大约130k文件的mount,在这个目录上运行find
大约需要5分钟。作为一种解决方法,我必须使用find > files.txt
然后grep over(它输出一个15MB的文件)。
我的印象是元数据应该存储在LRU中(在RAM中)并且它永远不会从LRU中逐出,因此find
应该快速完成。或者至少,这是我期望的行为。
我是否可以考虑进行任何ZFS调整或其他更改,以提高严重依赖元数据的工具(例如find
)的性能?例如,我是否可以强制元数据永远不会从RAM中逐出?
以下是ARC统计数据;
zfs:0:arcstats:buf_size 79301640
zfs:0:arcstats:c 773376320
zfs:0:arcstats:c_max 16054530048
zfs:0:arcstats:c_min 67108864
zfs:0:arcstats:class misc
zfs:0:arcstats:crtime 120.399677
zfs:0:arcstats:data_size 431609856
zfs:0:arcstats:deleted 412089
zfs:0:arcstats:demand_data_hits 523939
zfs:0:arcstats:demand_data_misses 10351
zfs:0:arcstats:demand_metadata_hits 2334880
zfs:0:arcstats:demand_metadata_misses 423667
zfs:0:arcstats:evict_l2_cached 0
zfs:0:arcstats:evict_l2_eligible 0
zfs:0:arcstats:evict_l2_ineligible 37581707264
zfs:0:arcstats:evict_prefetch 10717167616
zfs:0:arcstats:evicted_mfu 512746496
zfs:0:arcstats:evicted_mru 37068960768
zfs:0:arcstats:hash_chain_max 8
zfs:0:arcstats:hash_chains 53675
zfs:0:arcstats:hash_collisions 367438
zfs:0:arcstats:hash_elements 220238
zfs:0:arcstats:hash_elements_max 329038
zfs:0:arcstats:hits 4152502
zfs:0:arcstats:l2_abort_lowmem 0
zfs:0:arcstats:l2_cksum_bad 0
zfs:0:arcstats:l2_feeds 0
zfs:0:arcstats:l2_hdr_size 0
zfs:0:arcstats:l2_hits 0
zfs:0:arcstats:l2_imports 0
zfs:0:arcstats:l2_io_error 0
zfs:0:arcstats:l2_misses 434018
zfs:0:arcstats:l2_persistence_hits 0
zfs:0:arcstats:l2_read_bytes 0
zfs:0:arcstats:l2_rw_clash 0
zfs:0:arcstats:l2_size 0
zfs:0:arcstats:l2_write_bytes 0
zfs:0:arcstats:l2_writes_done 0
zfs:0:arcstats:l2_writes_error 0
zfs:0:arcstats:l2_writes_sent 0
zfs:0:arcstats:memory_throttle_count 8
zfs:0:arcstats:meta_limit 0
zfs:0:arcstats:meta_max 406053176
zfs:0:arcstats:meta_used 340106848
zfs:0:arcstats:mfu_ghost_hits 25036
zfs:0:arcstats:mfu_hits 1983081
zfs:0:arcstats:misses 1096150
zfs:0:arcstats:mru_ghost_hits 6868
zfs:0:arcstats:mru_hits 1063491
zfs:0:arcstats:mutex_miss 14476
zfs:0:arcstats:other_size 254914952
zfs:0:arcstats:p 47875874
zfs:0:arcstats:prefetch_behind_prefetch 505065
zfs:0:arcstats:prefetch_data_hits 1277533
zfs:0:arcstats:prefetch_data_misses 578922
zfs:0:arcstats:prefetch_joins 5131
zfs:0:arcstats:prefetch_meta_size 5890256
zfs:0:arcstats:prefetch_metadata_hits 16150
zfs:0:arcstats:prefetch_metadata_misses 83210
zfs:0:arcstats:prefetch_reads 73618
zfs:0:arcstats:prefetch_size 11386880
zfs:0:arcstats:rawdata_size 0
zfs:0:arcstats:size 771716704
zfs:0:arcstats:snaptime 321256.284490098
Page Summary Pages Bytes %Tot
----------------- ---------------- ---------------- ----
Kernel 726109 2.7G 17%
Defdump prealloc 258925 1011.4M 6%
ZFS Metadata 110595 432.0M 3%
ZFS File Data 43060 168.2M 1%
Anon 44656 174.4M 1%
Exec and libs 1015 3.9M 0%
Page cache 5552 21.6M 0%
Free (cachelist) 5949 23.2M 0%
Free (freelist) 2583982 9.8G 62%
Total 4185804 15.9G
size = 822 MB
target size (c) = 824 MB
target mru_size (p) = 57 MB
c_min = 64 MB
c_max = 15310 MB
buf_size = 75 MB
data_size = 487 MB
other_size = 256 MB
rawdata_size = 0 MB
meta_used = 335 MB
meta_max = 387 MB
meta_limit = 0 MB
memory_throttle_count = 8
arc_no_grow = 0
arc_tempreserve = 0 MB
mfu_size = 213 MB
mru_size = 205 MB