Al 04/09/13 18:10, En/na Anand Avati ha
escrit:
I didn't know that DHT was doing a sequential brick scan on readdir(p) (my fault). Why is that ? Why it cannot return entries crossing a server boundary ? is it due to a technical reason or is it only due to the current implementation ? I've made a test using only directories (50 directories with 50 subdirectories each). I started with one brick and I measured the time to do a recursive 'ls'. Then I sequentially added an additional brick, up to 6 (all of them physically independent), and repeated the ls. The time increases linearly as the number of bricks augments. As more bricks were added, the rebalancing time was also growing linearly. I think this is a big problem for scalability. It can be partially hidden by using some caching or preloading mechanisms, but it will be there and it will hit sooner or later. I've seen it, however I think it will only partially mitigate and hide an existing problem. Imagine you have some hundreds or a thousand of bricks. I doubt readdir-ahead or anything else can hide the enormous latency that the sequential DHT scan will generate in that case. The main problem I see is that the full directory structure is read many times sequentially. I think it would be better to do the readdir(p) calls in parallel and combine them (possibly in background). This way the time to scan the directory structure would be almost constant, independently of the number of bricks. Xavi
|