Received: by 10.213.65.68 with SMTP id h4csp2263633imn; Sun, 8 Apr 2018 23:55:23 -0700 (PDT) X-Google-Smtp-Source: AIpwx494N16eMIZ9MVG6c9U4s8mOek7sAAmcXRHPixQeeP0we5B8gQGoCqaNjkkIF/7wiHm1IH8V X-Received: by 2002:a17:902:107:: with SMTP id 7-v6mr37246391plb.374.1523256923224; Sun, 08 Apr 2018 23:55:23 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1523256923; cv=none; d=google.com; s=arc-20160816; b=oYa7+FTSaosFoW3mYKEbOuqd66z1GmmBUMa57S7Y97f1+YpEKXGqn6MZwi/tDdpdSG cLcyw52yF20zU6ulGOi1wzqaxyYhq82mB3kNgnu4UTuothg2ZLuVbhNO9dB/K0+r72pA 11/EKoPadp/ZoBOIAOuwuhvkxR8acER01ti7xjVH1Jm+aRGDCI6w6xPM7IwuxdHq0uSM ZA3Ekcx9TbHnNQ1gPKG+oJGFrd1W3LDZNCd/JyGfSptWldpXI0EvMkQDmd5fg0XFpGGE 0lqWjfTrDTkHJ694EzaV02Fokull+uQtvtsZuFQqz2Zu6xAs7m4PoXXP/glomLbp2EFP ykSw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:cc:to:subject:message-id:date:from :references:in-reply-to:mime-version:dkim-signature :arc-authentication-results; bh=YX4j+J4r9uSgJ0OD+A4fJI8JuNAM1rE5eSMVqQiu0t8=; b=t4rc6ojhWT5s4V5syh0FrDTGbB40h21wkfX1S+56cgDqQ0SyODMqY4DyKKQ/k/WdrI R702+PUea0uvD8999fGjk0rzFlLUOVoqJiLTvo/jyZRrQR9je0TaNAemM+0bmqVu2qPP yJ7u3NAsaLGx5SuUwaNLVQYFL8/HhGd0vZNV+ezhwDzz1SiCwVmkj9eczsn6xl2lnp3G 7TrABJc++iajgG5wo8oAion5hr2bvOSaUFlXWw8mw2TDyo4uLpYVjwtBpngUg6KB3dyx he/QOCdT4U99BfBQCTXMS7BVtZyo2iayRg/W6KJUxl/5lIyTKkjwPQZDDrj3rO5scJjd wcGA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@gmail.com header.s=20161025 header.b=mcJJzK9B; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id b2si8882857pgq.646.2018.04.08.23.54.45; Sun, 08 Apr 2018 23:55:23 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; dkim=pass header.i=@gmail.com header.s=20161025 header.b=mcJJzK9B; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1751991AbeDIGuV (ORCPT + 99 others); Mon, 9 Apr 2018 02:50:21 -0400 Received: from mail-io0-f175.google.com ([209.85.223.175]:33068 "EHLO mail-io0-f175.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751820AbeDIGuT (ORCPT ); Mon, 9 Apr 2018 02:50:19 -0400 Received: by mail-io0-f175.google.com with SMTP id p139so8337848iod.0 for ; Sun, 08 Apr 2018 23:50:19 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:in-reply-to:references:from:date:message-id:subject:to :cc; bh=YX4j+J4r9uSgJ0OD+A4fJI8JuNAM1rE5eSMVqQiu0t8=; b=mcJJzK9BEsvvUk6rEnQK2YRaT+fI9pHv1N9uW39P7diHLDhdEPuZu5QVqAdL0VVdR6 Ia2CR+fgZv35vfTVCq1iPB22ThdFrsRkUqDYH0Ij34XznXFiIwYXfOBzFLReJkchEQs4 tgx/GTy96OM7B8K3QSJ8Oonqg3cGZZ1q4peFuMesCpHedYPdn/2JLSUc6WtH4Ipqlf7T y/QSQvhVwarz3PIKUmCzVhRs8kQK/DUnim0nwyvuXy9dLVtMTZzbkDYKqy0J+MfIxCuD jwXnrwWQ1AQWFhk/g8DM9/xSbUAdT0bpcc3VBRiPh/QPPraLWLC3SRdMneuy0EpX5Qs7 U5lg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:in-reply-to:references:from:date :message-id:subject:to:cc; bh=YX4j+J4r9uSgJ0OD+A4fJI8JuNAM1rE5eSMVqQiu0t8=; b=sVF7ZTFR/UMjtIWqhCPB5faPfcOOdNoIcb0y9VF5TbMrcjnXrJx0tZa7Qaz6BqW0+q lcEB4JdO2v71x82vPynz9L8eGb4WxldiTCeaahe0FoMr2F0bd1L0w/xaFkE55SzFQoMJ ja1DGn+uMgdZkdVN6Pocad/psh7dAqyv2g5UoNJQFXlzuVYc0yCavFUsF0JXePgHWUeC /wDHZOtxF73qDfOETqr9rv9xttpX8nWGj3I8U8cNtdxhnplRboUg5Ma/7XUa4R4dYMIa TCgiw4UBcA4xGmvp8Msy2W9I6c+imnxQwBRcl1InT9YEbZ2zpz6GFLQm5wSg0NWfAynB vDuQ== X-Gm-Message-State: ALQs6tAZDiddlb/eZ4mRvmTX8Pw37Bnm/yAhZ3Mo1LblcpIhX71HmSfE YEOPPGKEjE/AWkeT+g07pr2+6MXLEq20xb5dQA8= X-Received: by 10.107.181.141 with SMTP id e135mr32072538iof.189.1523256618862; Sun, 08 Apr 2018 23:50:18 -0700 (PDT) MIME-Version: 1.0 Received: by 10.107.157.149 with HTTP; Sun, 8 Apr 2018 23:50:18 -0700 (PDT) In-Reply-To: References: <20180329065424.203172-1-minchan@kernel.org> <20180330012921.GB255979@rodete-desktop-imager.corp.google.com> <20180330100407.GB19140@kroah.com> <20180402063448.GA250086@rodete-desktop-imager.corp.google.com> <20180402071133.GA62369@rodete-desktop-imager.corp.google.com> <20180402103204.GB62369@rodete-desktop-imager.corp.google.com> From: Ganesh Mahendran Date: Mon, 9 Apr 2018 14:50:18 +0800 Message-ID: Subject: Re: [PATCH v5] ANDROID: binder: change down_write to down_read To: Minchan Kim Cc: Greg Kroah-Hartman , LKML , Joe Perches , =?UTF-8?B?QXJ2ZSBIasO4bm5ldsOlZw==?= , Todd Kjos , Martijn Coenen Content-Type: text/plain; charset="UTF-8" Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org 2018-04-09 14:40 GMT+08:00 Minchan Kim : > Hi Ganesh, > > Isn't there any update? We were on vacation a few days ago. After the test complete, I will update the result immediately. Thanks. > > On Mon, Apr 2, 2018 at 7:32 PM, Minchan Kim wrote: >> Hi Ganesh, >> >> On Mon, Apr 02, 2018 at 06:01:59PM +0800, Ganesh Mahendran wrote: >>> 2018-04-02 15:11 GMT+08:00 Minchan Kim : >>> > On Mon, Apr 02, 2018 at 02:46:14PM +0800, Ganesh Mahendran wrote: >>> >> 2018-04-02 14:34 GMT+08:00 Minchan Kim : >>> >> > On Fri, Mar 30, 2018 at 12:04:07PM +0200, Greg Kroah-Hartman wrote: >>> >> >> On Fri, Mar 30, 2018 at 10:29:21AM +0900, Minchan Kim wrote: >>> >> >> > Hi Ganesh, >>> >> >> > >>> >> >> > On Fri, Mar 30, 2018 at 09:21:55AM +0800, Ganesh Mahendran wrote: >>> >> >> > > 2018-03-29 14:54 GMT+08:00 Minchan Kim : >>> >> >> > > > binder_update_page_range needs down_write of mmap_sem because >>> >> >> > > > vm_insert_page need to change vma->vm_flags to VM_MIXEDMAP unless >>> >> >> > > > it is set. However, when I profile binder working, it seems >>> >> >> > > > every binder buffers should be mapped in advance by binder_mmap. >>> >> >> > > > It means we could set VM_MIXEDMAP in binder_mmap time which is >>> >> >> > > > already hold a mmap_sem as down_write so binder_update_page_range >>> >> >> > > > doesn't need to hold a mmap_sem as down_write. >>> >> >> > > > >>> >> >> > > > Android suffers from mmap_sem contention so let's reduce mmap_sem >>> >> >> > > > down_write. >>> >> >> > > >>> >> >> > > Hi, Minchan: >>> >> >> > > >>> >> >> > > It seems there is performance regression of this patch. >>> >> >> > >>> >> >> > You mean "This patch aims for solving performance regression" not "This patch >>> >> >> > makes performance regression"? >>> >> >> > >>> >> >> > > >>> >> >> > > Do you have some test result of android app launch time or binderThroughput? >>> >> >> > >>> >> >> > Unfortunately, I don't have any number. The goal is to reduce the number of >>> >> >> > call mmap_sem as write-side lock because it makes priority inversion of threads >>> >> >> > easily and that's one of clear part I spot that we don't need write-side lock. >>> >> >> >>> >> >> Please always run the binderThroughput tests when making binder changes >>> >> >> (there is a binder test suite in the CTS Android tests), as that ensures >>> >> >> that you are not causing performance regressions as well as just normal >>> >> >> bug regressions :) >>> >> > >>> >> > Thanks for the information. I didn't notice that such kinds of tests for >>> >> > binder. I will keep it in mind. >>> >> > >>> >> > Today, I have setup the testing for my phone and found testing was very >>> >> > fluctuating even without my patch. It might be not good with my test >>> >> > skill. I emulated user's behavior with various touch event. With it, I open >>> >> > various apps and play with them several times. Before starting the test, >>> >> > I did "adb shell stop && adb shell start && echo 3 > /proc/sys/vm/drop_caches" >>> >> > >>> >> > Such 15% noise was very easy to make it. >>> >> > >>> >> > Ganesh, How did you measure? What's the stddev? >>> >> >>> >> Hi, Minchan: >>> >> >>> >> Sorry for the late response, a little busy these days. :) >>> >> >>> >> We have our own test tools to measure app launch time, or you can use >>> >> android systrace to get the app launch time. We tested your V1 patch: >>> >> https://patchwork.kernel.org/patch/10312057/ >>> >> and found app lunch time regression. >>> > >>> > V1 had a bug with VM_MAYWRITE. Could you confirm it with v5? >>> >>> I have finished binder Throughput test. The test result is stable, >>> there is no performance >>> regression found both in v1 and v5. >> >> Thanks for the test! Now I'm struggling with setting up BinderThrough test. >> Binder matainers: >> If it's really one every binder contributors should do before the >> sending their patch, couldn't we have them in kernel directory like kselftest? >> Like me who understand just a part of code, it's hard to download android >> userspace full code and build/test. >> >> >>> >>> base patch_v1 patch_v5 >>> ----------------------------------------------------------- >>> 91223.4 90560.2 89644.5 >>> 90520.3 89583.1 89048.2 >>> 89833.2 90247.6 90091.3 >>> 90740.2 90276.7 90994.2 >>> 89703.5 90112.4 89994.6 >>> 89945.1 89122.8 88937.7 >>> 89872.8 90357.3 89307.4 >>> 89913.2 90355.4 89563.8 >>> 88979 90393.4 90182.8 >>> 89577.3 90946.8 90441.4 >>> AVG 90030.8 90195.57 89820.59 >> >> Yes, no regression. >> >>> >>> Before the test, I stop the android framework by: >>> adb shell stop >>> >>> > >>> > Please tell me more detail. What apps are slower compared to old? >>> > Every apps are slowed with avg 15%? Then, what's the stddev? >>> >>> Not all of the apps slowed 15%, The app *avg* launch time slowed 15%. >>> And We will re-launch the test tomorrow: base, v1,v5. We will get the >>> test result in two days later. Then I will post all the app launch time details. >> >> I'm also trying to make stable result in my side but it's really hard to >> get. Please post stddev of each app as well as avg when you finished testing. >> I really appreicate you. >> >>> >>> > >>> > The reason I'm asking is as I mentioned, it would be caused by rw_semaphore >>> > implementation and priority of threads which calls binder operation so I >>> > guess it would be not deterministic. >>> > >>> > When I had an simple experiment, it was very fluctuating as I expected. >>> > (the testing enviroment might be not good in my side). >>> > If it's real problem on real practice, better fix is not using write_lock >>> > of mmap_sem(it's abusing the write-side lock) but should adjust priority, >>> > I think. What do you think? >>> >>> If you want to narrow the range of the problem. We can disable binder priority >>> inherit, and do not set the priority(currently it is nice -10 or fifo) >>> of top app in Android AMS. >>> I think we need to wait for the test result to see whether it really >>> has performance >>> regression. >> >> Look at up_write. >> >> (Let's assume process B is head of wait list of rw_semaphore, and then C, D, E) >> If the process B is trying to down_write and previous lock holder A is >> called up_write, the only B could be waked up so there is no contention >> to get CPU slice. It's the current as-is but if we changes B to try to >> down_read instead of down_write, B should be competed with other down_read >> C,D,E in so the chance would be rare to be scheduled. >> >> It's really (timing|priority of binder and other threads) problem so I don't >> understand what you said how we could narrow down the problem with disabling >> binder priority. > > > > -- > Kind regards, > Minchan Kim