From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from firstgate.proxmox.com (firstgate.proxmox.com [IPv6:2a01:7e0:0:424::9]) by lore.proxmox.com (Postfix) with ESMTPS id 887831FF389 for ; Wed, 5 Jun 2024 13:01:58 +0200 (CEST) Received: from firstgate.proxmox.com (localhost [127.0.0.1]) by firstgate.proxmox.com (Proxmox) with ESMTP id B6D40326B1; Wed, 5 Jun 2024 13:02:29 +0200 (CEST) From: Christian Ebner To: pbs-devel@lists.proxmox.com Date: Wed, 5 Jun 2024 12:54:08 +0200 Message-Id: <20240605105416.278748-51-c.ebner@proxmox.com> X-Mailer: git-send-email 2.39.2 In-Reply-To: <20240605105416.278748-1-c.ebner@proxmox.com> References: <20240605105416.278748-1-c.ebner@proxmox.com> MIME-Version: 1.0 X-SPAM-LEVEL: Spam detection results: 0 AWL 0.028 Adjusted score from AWL reputation of From: address BAYES_00 -1.9 Bayes spam probability is 0 to 1% DMARC_MISSING 0.1 Missing DMARC policy KAM_DMARC_STATUS 0.01 Test Rule for DKIM or SPF Failure with Strict Alignment SPF_HELO_NONE 0.001 SPF: HELO does not publish an SPF Record SPF_PASS -0.001 SPF: sender matches SPF record T_SCC_BODY_TEXT_LINE -0.01 - URIBL_BLOCKED 0.001 ADMINISTRATOR NOTICE: The query to URIBL was blocked. See http://wiki.apache.org/spamassassin/DnsBlocklists#dnsbl-block for more information. [mod.rs] Subject: [pbs-devel] [PATCH v9 proxmox-backup 50/58] client: tools: add helper to raise nofile rlimit X-BeenThere: pbs-devel@lists.proxmox.com X-Mailman-Version: 2.1.29 Precedence: list List-Id: Proxmox Backup Server development discussion List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Reply-To: Proxmox Backup Server development discussion Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Errors-To: pbs-devel-bounces@lists.proxmox.com Sender: "pbs-devel" The default soft limit for open file handles is rather low, as some apis (e.g. the POSIX `select(2)` syscall) do not work [0]. The lookahead cache use during the backup clients metadata comparison to reuse unchanged files however requires much higher limits to work effectively. This helper function allows to raise the soft limit to the hard limit, as provided by the `getrlimit(2)` syscall. [0] https://0pointer.net/blog/file-descriptor-limits.html Suggested-by: Thomas Lamprecht Signed-off-by: Christian Ebner --- changes since version 8: - no changes pbs-client/src/tools/mod.rs | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) diff --git a/pbs-client/src/tools/mod.rs b/pbs-client/src/tools/mod.rs index d62b651ee..7fdd99a6a 100644 --- a/pbs-client/src/tools/mod.rs +++ b/pbs-client/src/tools/mod.rs @@ -625,3 +625,26 @@ pub fn handle_root_with_optional_format_version_prelude bail!("unexpected entry kind {:?}", first.kind()), } } + +/// Raise the soft limit for open file handles to the hard limit +/// +/// Returns the values set before raising the limit as libc::rlimit64 +pub fn raise_nofile_limit() -> Result { + let mut old = libc::rlimit64 { + rlim_cur: 0, + rlim_max: 0, + }; + if 0 != unsafe { libc::getrlimit64(libc::RLIMIT_NOFILE, &mut old as *mut libc::rlimit64) } { + bail!("Failed to get nofile rlimit"); + } + + let mut new = libc::rlimit64 { + rlim_cur: old.rlim_max, + rlim_max: old.rlim_max, + }; + if 0 != unsafe { libc::setrlimit64(libc::RLIMIT_NOFILE, &mut new as *mut libc::rlimit64) } { + bail!("Failed to set nofile rlimit"); + } + + Ok(old) +} -- 2.39.2 _______________________________________________ pbs-devel mailing list pbs-devel@lists.proxmox.com https://lists.proxmox.com/cgi-bin/mailman/listinfo/pbs-devel