Messages in this thread |  | | From | "J. R. Okajima" <> | Subject | Re: [PATCH 3/6] Squashfs: add multi-threaded decompression using percpu variables | Date | Mon, 18 Nov 2013 17:08:37 +0900 |
| |
Phillip Lougher: > CCing Junjiro Okijima and Stephen Hemminger
Thank you for CCing, and sorry for my slow responce.
> >> Using percpu variables has advantages and disadvantages over > >> implementations which do not use percpu variables. > >> > >> Advantages: the nature of percpu variables ensures decompression is > >> load-balanced across the multiple cores. > >> > >> Disadvantages: it limits decompression to one thread per core.
Honestly speaking, I don't remember the details of squashfs. It was a long long time ago when I read and modified squashfs. Anyway I will try replying.
Percpu is a good approach. Obviously, as you mentioned as disadvantage, it depends the balance between these two things. - How many I/Os in parallel? - How much does the decompression cost? My current guess is the latter is heavier (for the performance), so I guess percpu is good.
Is it guranteed that the decompressor never require any new resources? Under heavy I/O and memory pressure, if the decompressor wants some memory between get_cpu_ptr() and put_cpu_ptr(), and if the decompressor is running on all other cores at the same time, then does squashfs simply return ENOMEM because the memory shrinker cannot run on any core? If it is true, we may need a rule "no new resources for decompressing" since users may prefer the "slow but successful decompression" than getting ENOMEM.
If this mail is totaly pointless, please ignore.
J. R. Okajima
|  |