From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 2B970EB64D9 for ; Mon, 10 Jul 2023 10:52:49 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S229668AbjGJKwq (ORCPT ); Mon, 10 Jul 2023 06:52:46 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:52248 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229823AbjGJKwk (ORCPT ); Mon, 10 Jul 2023 06:52:40 -0400 Received: from smtp-out2.suse.de (smtp-out2.suse.de [IPv6:2001:67c:2178:6::1d]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id F016518C for ; Mon, 10 Jul 2023 03:52:19 -0700 (PDT) Received: from imap2.suse-dmz.suse.de (imap2.suse-dmz.suse.de [192.168.254.74]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature ECDSA (P-521) server-digest SHA512) (No client certificate requested) by smtp-out2.suse.de (Postfix) with ESMTPS id 734531FEBB; Mon, 10 Jul 2023 10:52:18 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=susede1; t=1688986338; h=from:from:reply-to:date:date:message-id:message-id:to:to:cc:cc: mime-version:mime-version:content-type:content-type: in-reply-to:in-reply-to:references:references; bh=BgqfV8AxMrOa+ZUfGi45FJ2mmGbR/B2qt4snvYgTU68=; b=dI2+m/Eif/cqR9elAlggzi63z+6kpGiYIJnpcn8uGHobiw5kkab5A/h/gqdIzfMZqxwDTX ySzUG2zcLd7x/DUn2Mt/ma3GKrjr1KMKGx38ZYK+nbHkFw6T1ER2tg6KO8i4Ay+A1H8lgQ DsWXeeNDO18QNWYrw7Yi5vMpRZzIl6o= Received: from imap2.suse-dmz.suse.de (imap2.suse-dmz.suse.de [192.168.254.74]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature ECDSA (P-521) server-digest SHA512) (No client certificate requested) by imap2.suse-dmz.suse.de (Postfix) with ESMTPS id 51ABD1361C; Mon, 10 Jul 2023 10:52:18 +0000 (UTC) Received: from dovecot-director2.suse.de ([192.168.254.65]) by imap2.suse-dmz.suse.de with ESMTPSA id YsyLEeLiq2RYUAAAMHmgww (envelope-from ); Mon, 10 Jul 2023 10:52:18 +0000 Date: Mon, 10 Jul 2023 12:52:17 +0200 From: Michal Hocko To: Zhongkun He Cc: minchan@kernel.org, senozhatsky@chromium.org, david@redhat.com, yosryahmed@google.com, linux-mm@kvack.org, linux-kernel@vger.kernel.org Subject: Re: [RFC PATCH 2/2] zram: charge the compressed RAM to the page's memcgroup Message-ID: References: <20230707044707.1169285-1-hezhongkun.hzk@bytedance.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20230707044707.1169285-1-hezhongkun.hzk@bytedance.com> Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Fri 07-07-23 12:47:07, Zhongkun He wrote: [...] > @@ -1692,11 +1725,21 @@ static int zram_recompress(struct zram *zram, u32 index, struct page *page, > > zs_unmap_object(zram->mem_pool, handle_new); > > + /* > + * Recompress will reclaim some memory, so we set the reclaim > + * flag in order to charge comp_len_new successfully. > + */ > + noreclaim_flag = memalloc_noreclaim_save(); > + objcg = zram_get_obj_cgroup(zram, index); > + obj_cgroup_get(objcg); > zram_free_page(zram, index); > + obj_cgroup_charge_zram(objcg, GFP_KERNEL, comp_len_new); AFAICS your obj_cgroup_charge_zram doesn't have gfp argument. Anyway, memalloc_noreclaim_save is an abuse IMHO (the primary purpose of the flag is to prevent recursion into the memory reclaim). Do you really can not perform any memory recalim to trigger to free up some memory if the memcg is at the hard limit boundary? > + zram_set_obj_cgroup(zram, index, objcg); > zram_set_handle(zram, index, handle_new); > zram_set_obj_size(zram, index, comp_len_new); > zram_set_priority(zram, index, prio); > > + memalloc_noreclaim_restore(noreclaim_flag); > atomic64_add(comp_len_new, &zram->stats.compr_data_size); > atomic64_inc(&zram->stats.pages_stored); > -- Michal Hocko SUSE Labs