From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1757678Ab2AKThn (ORCPT ); Wed, 11 Jan 2012 14:37:43 -0500 Received: from mailhub.sw.ru ([195.214.232.25]:44409 "EHLO relay.sw.ru" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1754713Ab2AKThm (ORCPT ); Wed, 11 Jan 2012 14:37:42 -0500 Message-ID: <4F0DE4B0.4070800@parallels.com> Date: Wed, 11 Jan 2012 23:36:16 +0400 From: Pavel Emelyanov User-Agent: Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.2.17) Gecko/20110428 Fedora/3.1.10-1.fc15 Thunderbird/3.1.10 MIME-Version: 1.0 To: KOSAKI Motohiro CC: Cyrill Gorcunov , LKML , Andrew Morton , Kyle Moffett , Tejun Heo , Glauber Costa , Andi Kleen , Matt Helsley , Pekka Enberg , Eric Dumazet , Vasiliy Kulikov , Alexey Dobriyan , Herbert Xu , "David S. Miller" , "Eric W. Biederman" , Andrey Vagin Subject: Re: [RFC] on general object IDs again References: <20120111161939.GI8752@moon> <20120111175952.GI466@moon> <4F0DD365.6070200@parallels.com> <20120111183115.GA28196@moon> In-Reply-To: Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On 01/11/2012 11:29 PM, KOSAKI Motohiro wrote: >>>> Then, you only need to compare. not any other calculation. i.e. only >>>> need id uniqueness. >>>> And any resource are referenced from tasks. so, can you reuse pid for >>>> this? example, >>>> two taska share one mm. >>>> >>>> task-a(pid: 100) >>>> |-----------------mm >>>> task-b(pid: 200) >>>> >>>> >>>> gen_obj_id(task-b, GEN_OBJ_ID_VM) return 100. (youngest pid of referenced tasks) >>> >>> We can, but determining the youngest pid for an mm struct is O(N) algo. >>> Having N tasks with N mm_structs getting the sharing picture becomes O(N^2). >> >> Yeah, exactly. If not the speed problem we would simply stick >> with Andrew's proposal as two-id-are-the-same(pid1, pid2) >> syscall. > > Why O(N^2) is matter? Typical HPC system have mere a few hundred pids. > so, O(N^2) > is not slow. How do you mesure Andrew's proposal? > > If you have 1000 pids and each syscall need 10usec, > > 1000 * 1000 * 10 = 10,000,000usec = 10sec. But, important thing is, almost all > processes don't share fs, mm and other structs. then, if we check > reference count > before task traversal, required time may reduce 1/10x - 1/100x. This might work for mm_structs, although quite a lot apps now do have threads and this mm->users check will be negative. But how about open files? Once we entered the get-the-youngest-file-owner routine we need to take locks and with 1000 tasks the overhead is not 1000 syscalls, but 1000 (syscalls + locks). > >> But when we get a number of pids to dump we need the >> resource affinity picture over them all. > . >