Received: by 2002:a05:7412:31a9:b0:e2:908c:2ebd with SMTP id et41csp2573430rdb; Tue, 12 Sep 2023 06:13:21 -0700 (PDT) X-Google-Smtp-Source: AGHT+IEoEX4s1T86D0J3Sb+AZa5pnCNNTYeYVVrFkI03LHY2NfxyEOPBqyMWnfZvtY9ul34/LsDM X-Received: by 2002:a17:903:1208:b0:1b7:e86f:7631 with SMTP id l8-20020a170903120800b001b7e86f7631mr13532409plh.19.1694524401443; Tue, 12 Sep 2023 06:13:21 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1694524401; cv=none; d=google.com; s=arc-20160816; b=T5PozM0UJn5NT/nUjgMHqjj37pd+0SnCEt3qNOPBKMiOL8bknVaHZP8FHm8AOMAjsG Jl4H2JuVtoeje97TAhgOcyJ6pZyRRWGguLOZ7koVqWE2TnZnTqaRY7TUx5QfwjzuXI03 7DtlfK/gzAiYH927Qr9mVF5csFFvhznGyE6lpGdac9BUMtqYU8l3Tlly8/oC6/+/s3VO fJp0GCV3gGkwtXMcrwfZGom7p6QbGIGXwK6y9H8MQs9FwswznePXOIyUdLb1RML2RCbK BFPeSw4Ior8SSvRPXh8BeptZQO4x/geWQPkkPdsfEDtdvcUdO2qCdVRv5xmdYchknNJq 9EAQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:in-reply-to:from :references:cc:to:subject:user-agent:mime-version:date:message-id :dkim-signature; bh=9t0udRiXjhYOvxVMqfWNiG3ptcHFZyJFhFtiEzZwrt0=; fh=6znqg4o/0ePbhzd3XMQuWkYBxffIkmGaamo/34Njcb8=; b=eCFdC4jEXmhIeNXU1QH9y7CZtRIFi5V7xdWIVzTDFBpoQLpE+ws9oKOHxb8+yHJyka 12GTdRUPoQ3QIGXYarKOMXndDYIkUvJ0Fdp5BBxHeTsNkkvKNfZ8ZUbP9Ee2C2ygP9Om +eJnn23g2xqM24zbUWkxZNx1TCSayDWS/5roKo/f0BhKOPI+G1DYbfi1bmhLWGEZmOBc O9+S2JFICC8X401U8kFw4TmYvQm++e8J1Xy1HdpuHbf8W1sWR6uuFQljZQANOoepblRI ij487MEWrfNnJCgqEgarbn1eYcqoHfPhtrehF+lvsOUvHVrp49/NFqBuFRxsCmCvrgBE Cw7A== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@bytedance.com header.s=google header.b=D2kAnvjr; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::3:6 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=QUARANTINE sp=QUARANTINE dis=NONE) header.from=bytedance.com Return-Path: Received: from pete.vger.email (pete.vger.email. [2620:137:e000::3:6]) by mx.google.com with ESMTPS id i4-20020a170902eb4400b001b02e8d8976si7866629pli.300.2023.09.12.06.13.21 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 12 Sep 2023 06:13:21 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::3:6 as permitted sender) client-ip=2620:137:e000::3:6; Authentication-Results: mx.google.com; dkim=pass header.i=@bytedance.com header.s=google header.b=D2kAnvjr; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::3:6 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=QUARANTINE sp=QUARANTINE dis=NONE) header.from=bytedance.com Received: from out1.vger.email (depot.vger.email [IPv6:2620:137:e000::3:0]) by pete.vger.email (Postfix) with ESMTP id 81BDB809BE64; Tue, 12 Sep 2023 00:12:01 -0700 (PDT) X-Virus-Status: Clean X-Virus-Scanned: clamav-milter 0.103.10 at pete.vger.email Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S231316AbjILHL6 (ORCPT + 99 others); Tue, 12 Sep 2023 03:11:58 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:49758 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S230182AbjILHL5 (ORCPT ); Tue, 12 Sep 2023 03:11:57 -0400 Received: from mail-pg1-x536.google.com (mail-pg1-x536.google.com [IPv6:2607:f8b0:4864:20::536]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 49547C3 for ; Tue, 12 Sep 2023 00:11:53 -0700 (PDT) Received: by mail-pg1-x536.google.com with SMTP id 41be03b00d2f7-57759a5bc17so1606994a12.1 for ; Tue, 12 Sep 2023 00:11:53 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=bytedance.com; s=google; t=1694502713; x=1695107513; darn=vger.kernel.org; h=content-transfer-encoding:in-reply-to:from:references:cc:to:subject :user-agent:mime-version:date:message-id:from:to:cc:subject:date :message-id:reply-to; bh=9t0udRiXjhYOvxVMqfWNiG3ptcHFZyJFhFtiEzZwrt0=; b=D2kAnvjrk5S2aNnzZkan5+RoAtPLlXFSmjA+pxy+7UzMyFJ/OHo8M6176VaGL1nWCK zC4jZhbIjyu/sm8n4+as7AGzu2sXWJyvRUSTbtaKWdNw1sUVcSsOKFzIxqI/mCkKjuN3 MjspG489auun8Eaxb5ifKcGbY/0XFpSiIhr+DoMYrFKt7o9sWsAf14HW3aTtyYq6VDDp N8Hg0Xs16YSlmDca3ZL7aUzjEizkapJPoyRyKvCHPuZbiLXweCBW4G3oeG65TOuZa0kA RIGB4Xf9gOtO2QXN/3RmcHl/PakJqPKPs+Ep7POAzz+8EPFSHQolDJIF1Esk82KofDfH bD2g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1694502713; x=1695107513; h=content-transfer-encoding:in-reply-to:from:references:cc:to:subject :user-agent:mime-version:date:message-id:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to; bh=9t0udRiXjhYOvxVMqfWNiG3ptcHFZyJFhFtiEzZwrt0=; b=ioyZjktYk4voEJKvHP3NNHNd1/bWcs0ICkMt1FxQ6xBjO2+lXYQWMqnj5nR41fbywz vUGQmwEVPcUov7AhQWqfdbMkSz5nZVSXW1GLX0Xx5h2mkw5Zy8AOM5BgKF5gqZnmJts6 lAWJ6LRMp5HY3Pyshl1+FBv+CQEYNfRBdLi9yuLxLGqdFG2w10EQfMDJYynh2fcEkurr mk8gjWeXOlXaMwSt2rGrOseeXKoRz/QCIBFTnUit6rXZrXlrPuKNhym9xkgJ6bBcy7m8 pCRHH4EKW8hHNF7Eu02P0WAfFIfIMwz+uYYv8oiQpt/XsaJMiGIy/Jw/arpbbYD74Lou Hyng== X-Gm-Message-State: AOJu0YwPzrsgQxPUgwHI1lZiZkcjvZb+LY8+vrPmsDnWB8ZblVokTblR QrDaKqEwAZdWGF/RNYzQ7QF1ruy7Mn3lLHR54fc= X-Received: by 2002:a05:6a20:12c4:b0:133:be9d:a8d3 with SMTP id v4-20020a056a2012c400b00133be9da8d3mr11252087pzg.14.1694502712756; Tue, 12 Sep 2023 00:11:52 -0700 (PDT) Received: from [10.254.144.32] ([139.177.225.235]) by smtp.gmail.com with ESMTPSA id v21-20020aa78515000000b0068a414858bdsm6681307pfn.118.2023.09.12.00.11.49 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Tue, 12 Sep 2023 00:11:52 -0700 (PDT) Message-ID: <09a0a33a-57c5-a81d-1b5b-982aa0e0441d@bytedance.com> Date: Tue, 12 Sep 2023 15:11:47 +0800 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:102.0) Gecko/20100101 Thunderbird/102.15.0 Subject: Re: [PATCH bpf-next v2 0/6] Add Open-coded process and css iters To: bpf@vger.kernel.org Cc: ast@kernel.org, daniel@iogearbox.net, andrii@kernel.org, martin.lau@kernel.org, tj@kernel.org, linux-kernel@vger.kernel.org References: <20230912070149.969939-1-zhouchuyi@bytedance.com> From: Chuyi Zhou In-Reply-To: <20230912070149.969939-1-zhouchuyi@bytedance.com> Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 8bit Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org X-Greylist: Sender passed SPF test, not delayed by milter-greylist-4.6.4 (pete.vger.email [0.0.0.0]); Tue, 12 Sep 2023 00:12:01 -0700 (PDT) X-Spam-Status: No, score=-2.0 required=5.0 tests=DKIM_SIGNED,DKIM_VALID, DKIM_VALID_AU,HEADER_FROM_DIFFERENT_DOMAINS,MAILING_LIST_MULTI, NICE_REPLY_A,SPF_HELO_NONE,SPF_PASS autolearn=unavailable autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on pete.vger.email 在 2023/9/12 15:01, Chuyi Zhou 写道: > Hi, > > This is version 2 of process and css iters support. All the changes were > suggested by Alexei. > > Thanks for your review! > > --- Changelog --- > Changes from v1: > - Add a pre-patch to make some preparations before supporting css_task > iters. > - Add an allowlist for css_task iters > - Let bpf progs do explicit bpf_rcu_read_lock() when using process iters > and css_descendant iters. Sorry for missing the link to v1 (https://lore.kernel.org/lkml/20230827072057.1591929-1-zhouchuyi@bytedance.com/). > --------------------- > > In some BPF usage scenarios, it will be useful to iterate the process and > css directly in the BPF program. One of the expected scenarios is > customizable OOM victim selection via BPF[1]. > > Inspired by Dave's task_vma iter[2], this patchset adds three types of > open-coded iterator kfuncs: > > 1. bpf_for_each(process, p). Just like for_each_process(p) in kernel to > itearing all tasks in the system. > > 2. bpf_for_each(css_task, task, css). It works like > css_task_iter_{start, next, end} and would be used to iterating > tasks/threads under a css. > > 3. bpf_for_each(css_{post, pre}, pos, root_css). It works like > css_next_descendant_{pre, post} to iterating all descendant css. > > BPF programs can use these kfuncs directly or through bpf_for_each macro. > > link[1]: https://lore.kernel.org/lkml/20230810081319.65668-1-zhouchuyi@bytedance.com/ > link[2]: https://lore.kernel.org/all/20230810183513.684836-1-davemarchevsky@fb.com/ > > Chuyi Zhou (6): > cgroup: Prepare for using css_task_iter_*() in BPF > bpf: Introduce css_task open-coded iterator kfuncs > bpf: Introduce process open coded iterator kfuncs > bpf: Introduce css_descendant open-coded iterator kfuncs > bpf: teach the verifier to enforce css_iter and process_iter in RCU CS > selftests/bpf: Add tests for open-coded task and css iter > > include/linux/cgroup.h | 12 +- > include/uapi/linux/bpf.h | 16 ++ > kernel/bpf/helpers.c | 12 ++ > kernel/bpf/task_iter.c | 130 +++++++++++++++++ > kernel/bpf/verifier.c | 53 ++++++- > kernel/cgroup/cgroup.c | 18 ++- > tools/include/uapi/linux/bpf.h | 16 ++ > tools/lib/bpf/bpf_helpers.h | 24 +++ > .../testing/selftests/bpf/prog_tests/iters.c | 138 ++++++++++++++++++ > .../testing/selftests/bpf/progs/iters_task.c | 104 +++++++++++++ > 10 files changed, 508 insertions(+), 15 deletions(-) > create mode 100644 tools/testing/selftests/bpf/progs/iters_task.c >