Another idea is to have a background thread to work in the background
scanning  chains to put the gd with optimum, not necessarily the maximum,
number of free clusters in the front (similar to what in-line alloc does 
today, but
do it in background).

While a chain is being worked upon by the bg thread, it will be markedi
"forbidden" to the normal in-line allocators, who will skip it.
Eventually a state will be reached when an allocation request will find 
the 1st
gd to satisfy alloc req, reducing and eliminating in-line traversal 
looking for
a gd with large enough free chunk. . The thread will continuously work
  in the background on every chain in an endless loop.
Thanks
-Tariq Saeed

On 08/24/2015 05:30 AM, Norton.Zhu wrote:
> In ocfs2_search_chain, I found it has low efficiency  while searching an 
> available gd in some circumstances:
> 1) The lun has a great many gd(it reads lots of unavailable gd(free bits is 
> zero));
> 2) Not too many gd, but the available gd is scattered in the unavailable 
> gd(fragmentation);
>
> So I have an idea to optimize the search method:
> 1) Use the reserved member in the ocfs2_group_desc to make an available chain 
> list(gds in the list are all available, free bits more than zero);
> 2) At the beginning, the chain list is the same with origin chain list;
> 3) While do allocation, it searches gd in the available chain list;
> 4) After each allocation, if some gd's free bits is zero, Remove it from the 
> available chain list;
> 5) After each reclaim, if some gd's free bits change from zero to positive, 
> Append it to the head of the available chain list;
>
> Once started with the basics outlined above, no unavailable gd will be read.
>
> Anyone has better ideas or advices?
>
>
> _______________________________________________
> Ocfs2-devel mailing list
> Ocfs2-devel@oss.oracle.com
> https://oss.oracle.com/mailman/listinfo/ocfs2-devel


_______________________________________________
Ocfs2-devel mailing list
Ocfs2-devel@oss.oracle.com
https://oss.oracle.com/mailman/listinfo/ocfs2-devel

Reply via email to