From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S933887AbcIALvz (ORCPT ); Thu, 1 Sep 2016 07:51:55 -0400 Received: from mailout2.samsung.com ([203.254.224.25]:59524 "EHLO mailout2.samsung.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S933830AbcIALvv (ORCPT ); Thu, 1 Sep 2016 07:51:51 -0400 MIME-version: 1.0 Content-type: text/plain; charset=UTF-8 X-AuditID: cbfee68e-f79cb6d000006cfe-96-57c816548319 Content-transfer-encoding: 8BIT Subject: Re: [PATCH V2] sched/fair: Fix that tasks are not constrained by cfs_b->quota on hotplug core, when hotplug core is offline and then online. To: Peter Zijlstra References: <1472562760-20842-1-git-send-email-jhez.kim@samsung.com> <20160901110132.GG10138@twins.programming.kicks-ass.net> Cc: mingo@redhat.com, linux-kernel@vger.kernel.org, kernel-janitors@vger.kernel.org, ezjjilong@gmail.com, Ben Segall From: Jeehong Kim Message-id: <57C8166B.3080807@samsung.com> Date: Thu, 01 Sep 2016 20:52:11 +0900 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:38.0) Gecko/20100101 Thunderbird/38.3.0 In-reply-to: <20160901110132.GG10138@twins.programming.kicks-ass.net> X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFprNIsWRmVeSWpSXmKPExsVy+t8zLd1QsRPhBnf3MFpMf9nIYtH9po/d YustaYvLu+awWVw6sIDJ4njvASYHNo+ds+6yeyzYVOqxeYWWx/t9V9k8Pm+SC2CN4rJJSc3J LEst0rdL4MpomyVYMF244vPdi8wNjHf5uxg5OCQETCRaNhh1MXICmWISF+6tZ+ti5OIQEljJ KHF+w1pGiISJxMeHp1ghEksZJa7M6AZL8AoISvyYfI8FZBCzgLzEkUvZIGFmAXWJSfMWMUPU 32eUmL33OdhUYYHpjBIXj61hAakSEdCUWNl2H2rdZUaJZV1tLCAOs0Avo8Sqe9vAVrAJaEjc bb7HArFOC+imxWA2i4CqROPxW2A1ogIREhMnNLCC2JwCrhLL3vezgwySEDjHLnG3dytUg4DE t8mHWCCelpXYdIAZ4jdJiYMrbrBMYBSbheSjWQgfzULy0QJG5lWMoqkFyQXFSelFRnrFibnF pXnpesn5uZsYIXHWt4Px5gHrQ4wCHIxKPLwNKsfDhVgTy4orcw8xmgIdMZFZSjQ5HxjNeSXx hsZmRhamJqbGRuaWZkrivAlSP4OFBNITS1KzU1MLUovii0pzUosPMTJxcEo1MHIfTtK4nX2Y NWfb22K5qN4/x+29T1mdMpxcuCUg6XzMFjXJRSmG3xrKf79k8k40Z7y7Zm7XovbK9KUXzZcv nXb3zv6d+y4dmnTovPJDjqVXZruqN9nfTVYTVNm6QnXXWuk5rP1/50VPj7KomDxLNf3rHs34 Wc+O9Xl8n/OhcNFpqxZxtWN/5euUWIozEg21mIuKEwH0LMmxrgIAAA== X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFnrJIsWRmVeSWpSXmKPExsVy+t9jAd0QsRPhBstmW1pMf9nIYtH9po/d YustaYvLu+awWVw6sIDJ4njvASYHNo+ds+6yeyzYVOqxeYWWx/t9V9k8Pm+SC2CNamC0yUhN TEktUkjNS85PycxLt1XyDo53jjc1MzDUNbS0MFdSyEvMTbVVcvEJ0HXLzAHar6RQlphTChQK SCwuVtK3wzQhNMRN1wKmMULXNyQIrsfIAA0krGPMaJslWDBduOLz3YvMDYx3+bsYOTkkBEwk Pj48xQphi0lcuLeerYuRi0NIYCmjxJUZ3YwgCV4BQYkfk++xdDFycDALyEscuZQNEmYWUJeY NG8RM0T9fUaJ2XufgzULC0xnlLh4bA0LSJWIgKbEyrb7UFMvM0os62pjAXGYBXoZJVbd2wa2 gk1AQ+Ju8z0WiHVaEuc3LAazWQRUJRqP3wKrERWIkJg4oQHsVk4BV4ll7/vZJzAKzEJy4SyE C2chuXABI/MqRonUguSC4qT0XMO81HK94sTc4tK8dL3k/NxNjOBofia1g/HgLvdDjAIcjEo8 vF6Bx8OFWBPLiitzDzFKcDArifBGiJwIF+JNSaysSi3Kjy8qzUktPsRoCnTjRGYp0eR8YKLJ K4k3NDYxM7I0MjM2MTc2VhLnffx/XZiQQHpiSWp2ampBahFMHxMHp1QD45pvzWc+PeOs3tZ/ +Pz/6gOeu7/YHzE8aCJtUNgn/dFA3tu7fP0pU83TzxKWH+F+fOP2OsdV5TEaW+KiX2XWrPwX fINnwbaY7fK2rZ17E1es+nb61nuGmA7O2Albk11azv7MTN8vZL5/0Y57yydseqeVGyzpwf/l 3+cra5f9v512V9aU6Z3CnhYlluKMREMt5qLiRACldZoe/AIAAA== DLP-Filter: Pass X-MTR: 20000000000000000@CPGS X-CFilter-Loop: Reflected Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Hello, First of all, thanks for review. And I am sorry that I forgot to CC Ben. The reason why I sent last mail twice is that I forgot including the comments for changes from PATCH V1. Thanks and BR. On 2016년 09월 01일 20:01, Peter Zijlstra wrote: > You forgot to Cc Ben, who gave you feedback on v1, which is rather poor > style. Also, I don't see how kernel-janitors is relevant to this patch. > This is very much not a janitorial thing. > > (also, why send it twice?) > > On Tue, Aug 30, 2016 at 10:12:40PM +0900, Jeehong Kim wrote: >> In case that CONFIG_HOTPLUG_CPU and CONFIG_CFS_BANDWIDTH is turned on >> and tasks in bandwidth controlled task group run on hotplug core, >> the tasks are not controlled by cfs_b->quota when hotplug core is offline >> and then online. The remaining tasks in task group consume all of >> cfs_b->quota on other cores. >> >> The cause of this problem is described as below: >> >> 1. When hotplug core is offline while tasks in task group run >> on hotplug core, unregister_fair_sched_group() deletes >> leaf_cfs_rq_list of tg->cfs_rq[cpu] from &rq_of(cfs_rq)->leaf_cfs_rq_list. >> >> 2. Then, when hotplug core is online, update_runtime_enabled() >> registers cfs_b->quota on cfs_rq->runtime_enabled of all leaf cfs_rq >> on runqueue. However, because this is before enqueue_entity() adds >> &cfs_rq->leaf_cfs_rq_list on &rq_of(cfs_rq)->leaf_cfs_rq_list, >> cfs->quota is not register on cfs_rq->runtime_enabled. >> >> To resolve this problem, this patch makes update_runtime_enabled() >> registers cfs_b->quota by using walk_tg_tree_from(). > >> +static int __maybe_unused __update_runtime_enabled(struct task_group *tg, void *data) >> { >> + struct rq *rq = data; >> + struct cfs_rq *cfs_rq = tg->cfs_rq[cpu_of(rq)]; >> + struct cfs_bandwidth *cfs_b = &cfs_rq->tg->cfs_bandwidth; >> >> + raw_spin_lock(&cfs_b->lock); >> + cfs_rq->runtime_enabled = cfs_b->quota != RUNTIME_INF; >> + raw_spin_unlock(&cfs_b->lock); >> >> + return 0; >> +} >> + >> +static void __maybe_unused update_runtime_enabled(struct rq *rq) >> +{ >> + struct cfs_rq *cfs_rq = &rq->cfs; >> + >> + /* register cfs_b->quota on the whole tg tree */ >> + rcu_read_lock(); >> + walk_tg_tree_from(cfs_rq->tg, __update_runtime_enabled, tg_nop, (void *)rq); >> + rcu_read_unlock(); >> } > Looks ok, performance on hotplug doesn't really matter. Ben, you happy > with this? > > >