Received: by 2002:a05:6358:d09b:b0:dc:cd0c:909e with SMTP id jc27csp5480511rwb; Mon, 14 Nov 2022 05:25:02 -0800 (PST) X-Google-Smtp-Source: AA0mqf6G/ZVweafqxUPMIL/nEk47kzF85BofOjbsL5iwEDARhwNR/wu0g7FDPtDKSknCbcWuQjYf X-Received: by 2002:a17:902:e052:b0:172:f5b1:e73b with SMTP id x18-20020a170902e05200b00172f5b1e73bmr13707482plx.58.1668432302077; Mon, 14 Nov 2022 05:25:02 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1668432302; cv=none; d=google.com; s=arc-20160816; b=XigFgQgd04s9SSnX//njshA5XOgen80vtyiyZiO+c5QzRuMbiLvKKafVq0xwjPsjSe +zVVmpe+qSs4KK0tfJuao8KgAeGuCMRSYQownPmugiiwATCMDz/fpmivbOSX33UcHhFw s3WCueZTcFYLsvii6DDHECUMgKd4kDgwFYcgUfWbiePaarN1XMIc4Jv93hcSyIDiZII2 F8ZHTu3zBAjc8YGk0AqOS+VceC1BTKZtQfpJDEy1iSbcInGSSewWzFtAO+qI0nNwOa4S NrvGXMXLeVC2EsAC3phU9/X/y5YUhhnCBYxmL8AybweS1NuEY+HWL4xt+wI+EOxCBxd/ 5/6A== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:in-reply-to:content-disposition:mime-version :references:message-id:subject:cc:to:from:date:dkim-signature; bh=pxLw92CxNmXV7lUHwwNNh3pTOe6v+PoNrvkBfjZKYfc=; b=UfvgOMK7spoJRl3afVn+rB42I3MHGTczyUAc4VoRBZ2N0RLAfhDRVzJbfGxbOO2S7n BCxYPfu6Gc2SfDMuoZIi/4qGzxSFYALbngfk73CVLFtFxi5ygFygACjm9ADQvIphAczR +bBaDcYa3lVbwzrCFbdKboLMWanlXb0hhzGLXzbvbQ6l3N9V6tPaRjR5Nvu3NVG37PKD OOHfNrQFuSOx4lg9u1HV5TZaxuluEeq2IAXc/2Yos3ZiDaAGhCbBc+KOy8ABtBb/DrZc KGJkqzIAyy7UCVH+0arkH3MVljXZnEyCpfMkoZXX/M/k5ynqrJANiTtBiluI1Nhb/Esq fHOw== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@gmail.com header.s=20210112 header.b=KRZeS7F7; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 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 out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id t3-20020a635f03000000b0046fbe60adc5si9218801pgb.510.2022.11.14.05.24.50; Mon, 14 Nov 2022 05:25:02 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; dkim=pass header.i=@gmail.com header.s=20210112 header.b=KRZeS7F7; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 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 S236809AbiKNLyv (ORCPT + 88 others); Mon, 14 Nov 2022 06:54:51 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:53534 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S236975AbiKNLyc (ORCPT ); Mon, 14 Nov 2022 06:54:32 -0500 Received: from mail-pl1-x634.google.com (mail-pl1-x634.google.com [IPv6:2607:f8b0:4864:20::634]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id BC82A27B24; Mon, 14 Nov 2022 03:50:14 -0800 (PST) Received: by mail-pl1-x634.google.com with SMTP id d20so9814169plr.10; Mon, 14 Nov 2022 03:50:14 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=in-reply-to:content-disposition:mime-version:references:message-id :subject:cc:to:from:date:from:to:cc:subject:date:message-id:reply-to; bh=pxLw92CxNmXV7lUHwwNNh3pTOe6v+PoNrvkBfjZKYfc=; b=KRZeS7F7eWOmhgnb4D7Y4+WqRwo8eLME20CHDJIBZlfXI6X4le5Kor2WIa1YVw4LM7 znrdNlx3rbhxecE9Q883iLc6fL9Jr+Hr2//jJdJGgVusXzXvJ+FyKKsiwr28hy8bsi1l fqEM4oXGaIGnNPmocA7h0jot+GMhRXl9oF8B0Ny8L4UsLANYRDZG1D6LiaeAxeDvTdQd nIoaI+6GXagI3hJ9Po9/vsKKQ7/5LJFeCdRQFWklw2UvLYZJT5hkxFmgiHe2s/DDRCGk HZUXEwWGqYqOjM8TFuceqGQPQ5D1yYzFxPsMMqX89I7raHubUCEHlPV4W3DJG8nz5wrR fALA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=in-reply-to:content-disposition:mime-version:references:message-id :subject:cc:to:from:date:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to; bh=pxLw92CxNmXV7lUHwwNNh3pTOe6v+PoNrvkBfjZKYfc=; b=capqamEk5O1b9JbAKwBlT2IjLcLe0RtSGQX3XxPEtBEIk+/unKtJVGO3etsyBraOsG LLjVq8GzvL2o+rZ0b+qIKYsEckVh2CuvQ7mFYJFxd8vzvIR0xukLWbgLBJJv6cM+1Pw3 Z15YbpYpHNBhucoy/+cqi6qf76WWUgOW0scKdtDdGoy9lHNGkTO+AYtIj6klmRJ4xhjT 5csgyAN99N70LDcJ6dCpVIpp242qWc6QnFalXZLJbNTSa/gfb5bYAqoWdK2SJN1IiJqe mFQh4NwFm4/1CLTQEuWsxNetcAtTg5prn7/jQpo1ehXFYzmJPKVcSIqvRt1sSRxt5ktM wInw== X-Gm-Message-State: ANoB5pkAAI+pXl0NyZEh0K8iYrTQShCMWoNwe0nLaXu+ZNzqDsmEis2J uQIimb9tXiqruKbYYutiMsQ= X-Received: by 2002:a17:902:7843:b0:187:282c:9b9c with SMTP id e3-20020a170902784300b00187282c9b9cmr13412451pln.29.1668426614110; Mon, 14 Nov 2022 03:50:14 -0800 (PST) Received: from hyeyoo ([114.29.91.56]) by smtp.gmail.com with ESMTPSA id x12-20020aa79acc000000b0056ddd2b5e9bsm6517901pfp.41.2022.11.14.03.50.06 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 14 Nov 2022 03:50:13 -0800 (PST) Date: Mon, 14 Nov 2022 20:50:03 +0900 From: Hyeonggon Yoo <42.hyeyoo@gmail.com> To: Vlastimil Babka Cc: Damien Le Moal , Conor Dooley , Pasha Tatashin , Christoph Lameter , David Rientjes , Joonsoo Kim , Pekka Enberg , Matthew Wilcox , Roman Gushchin , Linus Torvalds , "linux-mm@kvack.org" , "linux-kernel@vger.kernel.org" , Catalin Marinas , Rustam Kovhaev , Andrew Morton , Josh Triplett , Arnd Bergmann , Russell King , Alexander Shiyan , Aaro Koskinen , Janusz Krzysztofik , Tony Lindgren , Yoshinori Sato , Rich Felker , Jonas Bonn , Stefan Kristiansson , Stafford Horne , "linux-arm-kernel@lists.infradead.org" , openrisc@lists.librecores.org, linux-riscv@lists.infradead.org, linux-sh@vger.kernel.org, Geert Uytterhoeven , Conor.Dooley@microchip.com, Paul Cercueil Subject: Re: Deprecating and removing SLOB Message-ID: References: <93079aba-362e-5d1e-e9b4-dfe3a84da750@opensource.wdc.com> <44da078c-b630-a249-bf50-67df83cd8347@suse.cz> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <44da078c-b630-a249-bf50-67df83cd8347@suse.cz> X-Spam-Status: No, score=-0.1 required=5.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,FREEMAIL_FROM,HK_RANDOM_ENVFROM, HK_RANDOM_FROM,RCVD_IN_DNSWL_NONE,SPF_HELO_NONE,SPF_PASS autolearn=no autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Mon, Nov 14, 2022 at 10:36:31AM +0100, Vlastimil Babka wrote: > On 11/14/22 06:48, Damien Le Moal wrote: > > On 11/14/22 10:55, Damien Le Moal wrote: > >> On 11/12/22 05:46, Conor Dooley wrote: > >>> On Fri, Nov 11, 2022 at 11:33:30AM +0100, Vlastimil Babka wrote: > >>>> On 11/8/22 22:44, Pasha Tatashin wrote: > >>>>> On Tue, Nov 8, 2022 at 10:55 AM Vlastimil Babka wrote: > >>>>>> > >>>>>> Hi, > >>>>>> > >>>>>> as we all know, we currently have three slab allocators. As we discussed > >>>>>> at LPC [1], it is my hope that one of these allocators has a future, and > >>>>>> two of them do not. > >>>>>> > >>>>>> The unsurprising reasons include code maintenance burden, other features > >>>>>> compatible with only a subset of allocators (or more effort spent on the > >>>>>> features), blocking API improvements (more on that below), and my > >>>>>> inability to pronounce SLAB and SLUB in a properly distinguishable way, > >>>>>> without resorting to spelling out the letters. > >>>>>> > >>>>>> I think (but may be proven wrong) that SLOB is the easier target of the > >>>>>> two to be removed, so I'd like to focus on it first. > >>>>>> > >>>>>> I believe SLOB can be removed because: > >>>>>> > >>>>>> - AFAIK nobody really uses it? It strives for minimal memory footprint > >>>>>> by putting all objects together, which has its CPU performance costs > >>>>>> (locking, lack of percpu caching, searching for free space...). I'm not > >>>>>> aware of any "tiny linux" deployment that opts for this. For example, > >>>>>> OpenWRT seems to use SLUB and the devices these days have e.g. 128MB > >>>>>> RAM, not up to 16 MB anymore. I've heard anecdotes that the performance > >>>>>> SLOB impact is too much for those who tried. Googling for > >>>>>> "CONFIG_SLOB=y" yielded nothing useful. > >>>>> > >>>>> I am all for removing SLOB. > >>>>> > >>>>> There are some devices with configs where SLOB is enabled by default. > >>>>> Perhaps, the owners/maintainers of those devices/configs should be > >>>>> included into this thread: > >>>>> > >>>>> tatashin@soleen:~/x/linux$ git grep SLOB=y > >>> > >>>>> arch/riscv/configs/nommu_k210_defconfig:CONFIG_SLOB=y > >>>>> arch/riscv/configs/nommu_k210_sdcard_defconfig:CONFIG_SLOB=y > >>>>> arch/riscv/configs/nommu_virt_defconfig:CONFIG_SLOB=y > >>> > >>>> > >>>> Turns out that since SLOB depends on EXPERT, many of those lack it so > >>>> running make defconfig ends up with SLUB anyway, unless I miss something. > >>>> Only a subset has both SLOB and EXPERT: > >>>> > >>>>> git grep CONFIG_EXPERT `git grep -l "CONFIG_SLOB=y"` > >>> > >>>> arch/riscv/configs/nommu_virt_defconfig:CONFIG_EXPERT=y > >>> > >>> I suppose there's not really a concern with the virt defconfig, but I > >>> did check the output of `make nommu_k210_defconfig" and despite not > >>> having expert it seems to end up CONFIG_SLOB=y in the generated .config. > >>> > >>> I do have a board with a k210 so I checked with s/SLOB/SLUB and it still > >>> boots etc, but I have no workloads or w/e to run on it. > >> > >> I sent a patch to change the k210 defconfig to using SLUB. However... > > Thanks! > > >> The current default config using SLOB gives about 630 free memory pages > >> after boot (cat /proc/vmstat). Switching to SLUB, this is down to about > >> 400 free memory pages (CONFIG_SLUB_CPU_PARTIAL is off). > > Thanks for the testing! How much RAM does the system have btw? I found 8MB > somewhere, is that correct? > So 230 pages that's a ~920 kB difference. Last time we saw less dramatic > difference [1]. But that was looking at Slab pages, not free pages. IIRC overhead of s->min_partial (between 5 and 10) was pretty big because SLUB caches at most (s->min_partial) * (nr of caches) * (size of slab) bytes of unused memory. Passing slub_max_order=0 also may help a little bit. > The extra overhead could be also in percpu allocations, code etc. SLUB do not use large amount of percpu allocator I think, less than 30kB on such a small machine. Maybe also it would help reducing code size to disable CONFIG_MEMCG and CONFIG_TRACING, CONFIG_SLUB_DEBUG and CONFIG_SYSFS. I started from tinyconfig and enabled only necessary configs when testing in [1] (it's a bit laborious cuz pure tinyconfig does not even boot...). > >> This is with a buildroot kernel 5.19 build including a shell and sd-card > >> boot. With SLUB, I get clean boots and a shell prompt as expected. But I > >> definitely see more errors with shell commands failing due to allocation > >> failures for the shell process fork. So as far as the K210 is concerned, > >> switching to SLUB is not ideal. > >> > >> I would not want to hold on kernel mm improvements because of this toy > >> k210 though, so I am not going to prevent SLOB deprecation. I just wish > >> SLUB itself used less memory :) > > > > Did further tests with kernel 6.0.1: > > * SLOB: 630 free pages after boot, shell working (occasional shell fork > > failure happen though) > > * SLAB: getting memory allocation for order 7 failures on boot already > > (init process). Shell barely working (high frequency of shell command fork > > failures) > > * SLUB: getting memory allocation for order 7 failures on boot. I do get a > > shell prompt but cannot run any shell command that involves forking a new > > process. > > > > So if we want to keep the k210 support functional with a shell, we need > > slob. If we reduce that board support to only one application started as > > the init process, then I guess anything is OK. > > In [1] it was possible to save some more memory with more tuning. Some of > that required boot parameters and other code changes. In another reply [2] I > considered adding something like SLUB_TINY to take care of all that, so > looks like it would make sense to proceed with that. > > [1] > https://lore.kernel.org/all/Yg9xSWEaTZLA+hYt@ip-172-31-19-208.ap-northeast-1.compute.internal/ > [2] https://lore.kernel.org/all/eebc9dc8-6a45-c099-61da-230d06cb3157@suse.cz/ -- Thanks, Hyeonggon