On 06/09/2011 10:14 AM, Ding Honghui wrote:
On 06/09/2011 12:23 AM, Donald Stahl wrote:
Another (less satisfying) workaround is to increase the amount of
free space
in the pool, either by reducing usage or adding more storage. Observed
behavior is that allocation is fast until usage crosses a
threshhold, then
performance hits a wall.
We actually tried this solution. We were at 70% usage and performance
hit a wall. We figured it was because of the change of fit algorithm
so we added 16 2TB disks in mirrors. (Added 16TB to an 18TB pool). It
made almost no difference in our pool performance. It wasn't until we
told the metaslab allocator to stop looking for such large chunks that
the problem went away.
The original poster's pool is about 78% full. If possible, try freeing
stuff until usage goes back under 75% or 70% and see if your
performance
returns.
Freeing stuff did fix the problem for us (temporarily) but only in an
indirect way. When we freed up a bunch of space, the metaslab
allocator was able to find large enough blocks to write to without
searching all over the place. This would fix the performance problem
until those large free blocks got used up. Then- even though we were
below the usage problem threshold from earlier- we would still have
the performance problem.
-Don
_______________________________________________
zfs-discuss mailing list
zfs-discuss@opensolaris.org
http://mail.opensolaris.org/mailman/listinfo/zfs-discuss
Don,
From your words, my symptom is almost same with yours.
We have examine the metaslab layout, when metaslab_df_free_pct is 35,
there are 65 free metaslab(64G),
The write performance is very low and the rough test shows no new free
metaslab will be loaded and activated.
Then we tune the metaslab_df_free_pct to 4, the performance keep good
for 1 week and the free metaslab reduce to 51.
But now, the write bandwidth is poor again ( maybe I'd better trace
the free space of each metaslab? )
Maybe there are some problem in metaslab rating score(weight) for
select the metaslab and block allocator algorithm?
There is snapshot of metaslab layout, the last 51 metaslabs have 64G
free space.
vdev offset spacemap free
---------- ------------------- ---------------
-------------
... snip
vdev 3 offset 27000000000 spacemap 440 free
21.0G
vdev 3 offset 28000000000 spacemap 31 free
7.36G
vdev 3 offset 29000000000 spacemap 32 free
2.44G
vdev 3 offset 2a000000000 spacemap 33 free
2.91G
vdev 3 offset 2b000000000 spacemap 34 free
3.25G
vdev 3 offset 2c000000000 spacemap 35 free
3.03G
vdev 3 offset 2d000000000 spacemap 36 free
3.20G
vdev 3 offset 2e000000000 spacemap 90 free
3.28G
vdev 3 offset 2f000000000 spacemap 91 free
2.46G
vdev 3 offset 30000000000 spacemap 92 free
2.98G
vdev 3 offset 31000000000 spacemap 93 free
2.19G
vdev 3 offset 32000000000 spacemap 94 free
2.42G
vdev 3 offset 33000000000 spacemap 95 free
2.83G
vdev 3 offset 34000000000 spacemap 252 free
41.6G
vdev 3 offset 35000000000 spacemap 0 free
64G
vdev 3 offset 36000000000 spacemap 0 free
64G
vdev 3 offset 37000000000 spacemap 0 free
64G
vdev 3 offset 38000000000 spacemap 0 free
64G
vdev 3 offset 39000000000 spacemap 0 free
64G
vdev 3 offset 3a000000000 spacemap 0 free
64G
vdev 3 offset 3b000000000 spacemap 0 free
64G
vdev 3 offset 3c000000000 spacemap 0 free
64G
vdev 3 offset 3d000000000 spacemap 0 free
64G
vdev 3 offset 3e000000000 spacemap 0 free
64G
...snip
I free up some disk space(about 300GB), the performance is back again.
I'm sure the performance will degrade again soon.
_______________________________________________
zfs-discuss mailing list
zfs-discuss@opensolaris.org
http://mail.opensolaris.org/mailman/listinfo/zfs-discuss