Received: by 10.213.65.68 with SMTP id h4csp2277473imn; Thu, 5 Apr 2018 12:03:44 -0700 (PDT) X-Google-Smtp-Source: AIpwx4+3iRa1DnXlPjn8bDEffTUZo3/FX8kCflBrsijEZLccoa8uURK4+fyfAfZHXtPLGy0YqO8F X-Received: by 2002:a17:902:7201:: with SMTP id ba1-v6mr16459390plb.0.1522955024928; Thu, 05 Apr 2018 12:03:44 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1522955024; cv=none; d=google.com; s=arc-20160816; b=Tqk54bociyAuIik2W/FfCTwQgXPDoS+oaGZVRWMtq/GQs//Dm/nLQ2Bohn0DfbUt3w xO5X3BVLwpCqCaY+82P8hEDVdN78z3gLxloV07d2f2yy+UdjYeogRSB95eNzlqFXK6z7 xSGvfel3IJs1/EfNl07lUNJXY8uiybf5Fa+4UXlrT1UUu3LsVzHQBxnsRnoL7C1bH486 FrhdDJ1XKtdu/nwNzbFHYkuFerpYOS/2srEMY4aOk9hNwFIVGLwIgbe09sC3NyppKtTh 1RJOqWIwv1n+ND9PTRONASK7/HjIrnq5WwPOcMioGNkz8S6lQeq1l4/S0TnK9VCGwucy VshA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:spamdiagnosticmetadata :spamdiagnosticoutput:mime-version:references:in-reply-to:message-id :date:subject:cc:to:from:dkim-signature:dkim-signature :arc-authentication-results; bh=zx3LVvUyXeVnVVLhrX4NR9Uv7SH8jMhxOiT1g0qcsPU=; b=cacejlFkBjwGedEbn3ESoOkB+CmbqEonIqI1Kbs6e5eSYTJylrINgz9EM7+reolx6P x34q12Y/Dhm7pB71xLcaEjgcjW/H0OKRGzYRNXYd29B4da0MKeBX7GlAEbvlu/dEzTdr 44OZSE5hgWZn2MSo+ItfLPrpMIOLFc5f6/1FmyThjYPYZGP6Hfbuxjq6d+fklCbl//H3 DJa3vvClsXdqmO5ogTpmW9XRfkNzYoG8sulsBHLH4KBsMOxmzXAk4MshA01qcT+ZmESm 4+hpgxVqVIEF0OBz7VQFPT4/XXfU5vxENgFIGXeY4BTOGqmuidoNPilwdNSNrVYf+4B7 vwww== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@fb.com header.s=facebook header.b=fM3UXdRz; dkim=pass header.i=@fb.onmicrosoft.com header.s=selector1-fb-com header.b=Uct5x5od; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=fb.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id k15si5852744pgp.278.2018.04.05.12.03.30; Thu, 05 Apr 2018 12:03:44 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; dkim=pass header.i=@fb.com header.s=facebook header.b=fM3UXdRz; dkim=pass header.i=@fb.onmicrosoft.com header.s=selector1-fb-com header.b=Uct5x5od; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=fb.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752846AbeDETB6 (ORCPT + 99 others); Thu, 5 Apr 2018 15:01:58 -0400 Received: from mx0a-00082601.pphosted.com ([67.231.145.42]:36136 "EHLO mx0a-00082601.pphosted.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752398AbeDETBy (ORCPT ); Thu, 5 Apr 2018 15:01:54 -0400 Received: from pps.filterd (m0044008.ppops.net [127.0.0.1]) by mx0a-00082601.pphosted.com (8.16.0.22/8.16.0.22) with SMTP id w35J1PXC023313; Thu, 5 Apr 2018 12:01:47 -0700 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=fb.com; h=from : to : cc : subject : date : message-id : in-reply-to : references : mime-version : content-type; s=facebook; bh=zx3LVvUyXeVnVVLhrX4NR9Uv7SH8jMhxOiT1g0qcsPU=; b=fM3UXdRzDEsay23MQBsrEE5Yz3d+Wnj2nEyr5u+javrbvXETz2r19Aepq50jP+ZXUfH+ 3RPotRe9+o3lU674YakfbJ2bS1J/PPX4qgFPgcNYbHOt91E39LzBnGzs1jxKdEPfRdP2 dIiZUd8NL3TEDB/OHYhEmKfOn0qwYq8b5Ko= Received: from mail.thefacebook.com ([199.201.64.23]) by mx0a-00082601.pphosted.com with ESMTP id 2h5pwxrhwc-9 (version=TLSv1 cipher=ECDHE-RSA-AES256-SHA bits=256 verify=NOT); Thu, 05 Apr 2018 12:01:47 -0700 Received: from NAM03-DM3-obe.outbound.protection.outlook.com (192.168.54.28) by o365-in.thefacebook.com (192.168.16.15) with Microsoft SMTP Server (TLS) id 14.3.361.1; Thu, 5 Apr 2018 11:59:56 -0700 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=fb.onmicrosoft.com; s=selector1-fb-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version; bh=zx3LVvUyXeVnVVLhrX4NR9Uv7SH8jMhxOiT1g0qcsPU=; b=Uct5x5odeODoY41yA4Vc9xvmhCrCMbvUlHgI90t7iHsaM6GEvmb24ItJ8bOWFSNCCK1WlnNOdKQe65+dxfdpLE+jKx1wijv9ZJMHU0bVefmdvGT9JivHAl6V2nx3MRpF1TNhTN+Fc3eYFhf2cVpN0awexwscVps3/FwxXlAs5GA= Received: from castle.thefacebook.com (2620:10d:c092:200::1:c820) by CO1PR15MB1078.namprd15.prod.outlook.com (2a01:111:e400:7b66::8) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P256) id 15.20.653.12; Thu, 5 Apr 2018 18:59:47 +0000 From: Roman Gushchin To: CC: Roman Gushchin , Andrew Morton , Johannes Weiner , Michal Hocko , Vladimir Davydov , Tejun Heo , , , Subject: [PATCH v3 3/4] mm: treat memory.low value inclusive Date: Thu, 5 Apr 2018 19:59:20 +0100 Message-ID: <20180405185921.4942-3-guro@fb.com> X-Mailer: git-send-email 2.14.3 In-Reply-To: <20180405185921.4942-1-guro@fb.com> References: <20180405185921.4942-1-guro@fb.com> MIME-Version: 1.0 Content-Type: text/plain X-Originating-IP: [2620:10d:c092:200::1:c820] X-ClientProxiedBy: DB6PR0601CA0040.eurprd06.prod.outlook.com (2603:10a6:4:17::26) To CO1PR15MB1078.namprd15.prod.outlook.com (2a01:111:e400:7b66::8) X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: d0aef898-857a-441a-cb28-08d59b27694a X-Microsoft-Antispam: UriScan:;BCL:0;PCL:0;RULEID:(7020095)(4652020)(5600026)(4604075)(4534165)(4627221)(201703031133081)(201702281549075)(2017052603328)(7153060)(7193020);SRVR:CO1PR15MB1078; X-Microsoft-Exchange-Diagnostics: 1;CO1PR15MB1078;3:stRybsPO9K3dQePb4CXwwW0qxIlJ+5ErVc+DuAXiM3apXHVayMuwZ19hW6dMQCaI9hAEa9jn/+3oXg403GBKbIQMzZBbqlqoB4LEMCVVHhLknHTXtmnhi/iOw24QvokGg2Xi664jzScLS+OJCDvzQF+RSHHK4MvaewAGMauPx/qUb3fRu15Y3fWbztCwyHQyUxVVwfrAFx2jGyJdY8lU4QQLmz1A89AUon2itHPDk08OUpR97oJ48nCRjGtTz0Dz;25:k6gy/xJzG/ryB6gGBnI0/Mro2Cs22ZR5uNm31N/jRk1SovZ8gE/i8baZ7Cv92N5BGPlkjFGN/WH1f9O93dPKTsBfdMCLR9eWn+1O6ayiC51t/u+9pALUQISQZV+UhK+fTFtyzkdS0xhJwgjl6xg2FphLKjlr/ahS6V27OhHkJ9k+nQNJMYMlUWr4DjozjgtbL9xWRELewk0f1oqso5wJnlb8MESwRFfbsN15q5G0aBT5mVPykt2DtpjOFEvboG935aZllLTlfsDnkCT8Fn4G4e6bAXTseN7KunPHC9L1/rieyb0L2fancCpRNA+2VU14gvBED3pgH0ltK0y2FscFyQ==;31:RTHnCp/oryDNnveEHGzeCZDjiYypXYAYRyQC8ny0I9Sp07dtlW1CteOHdJuny1tILDN8zwIlJJdC0eTnliIxp94Y3qI9QLvHxuHhzT8klc58o2Eh364JM9a+/Mjcr/6ldkJJomwbnXv1UWLEXEx23gi2e57lx4k155ykwkEZdzNzmMrzIZ60SspxIeiWl5wUOJSQJ255MOPz+2rq/HK5uMKRJa6PJa9ibonPr6c+hvM= X-MS-TrafficTypeDiagnostic: CO1PR15MB1078: X-Microsoft-Exchange-Diagnostics: 1;CO1PR15MB1078;20:QaMHgv3O6PQspBncF8pETqeuxl37Vpym18DdEG3PIl9bWwO+hQzeq7pMAjXy7oeGBb+TRo1ek6ujeU6nbE9mH3Aa2VF8j1tnD4G7OyPDZ+lXEI4p45cpxH/lDYZFlUkrco2fTzImiiMOqnaDHLriGBKAr7qubIHgCYgzUQE1lyV+K6S7OWCnSYIyOjlyf4/cbAMb2pnAI4Sc8/QOZ1ZsxSYDIhoh+hW6txJncLpR7EHcrVJFGVLes42GEZ/1e0l1yU/9UBim9dkNachuFpRQCJaEUkxnpKqzLWd/Z7l9FHFQILl2Fo8eyzPv0dl9LiUH7kGw7kftuMcncp2VoQkJMCVy/WWu+eJSiq+oNl6lztmpi6JghFWWfn6jPRCrQSeP0MNukzXlad9Yypw7WzQ3qEWf8npOQ8XlvZyUffCTpM2djNBd8rSr+i2D98975QLq8lxeyRbloOF+EbxRTZV1Hk3nUByOLV4O9LOO/oO+GRKqkLXiKo/YTCUoH6U3hBgK;4:ViAjl9hy/wkRfy3rsqgq1f3/pS7SYIDmItvJ9v05IMhBOeQIeDoCEDcpJJUjfJnO1kdHdImTY+cQ+ujauWSUJE5DdGrBm0b1DQPSiWZfPQ1oqPQVygHPUCJKyfJa+4jfm0/nw/IQdcZ2cnNQOyeJ6K59b703rsg57XgvgPLwFzh9YBzvmVN0uH2lNRYgRUJnkuB5wr5g5LdZCXc6JKhnUWSrVxYYlOaDyKQ1e0pnFcKVbxzXAPThydpmdn4KrIaqoo7xrhfNmoLloihX7x4XvCPlkE5uL8Ts8yfNAO002Y4qqQ75yyvemN2gPE0JBcD2wvwbxnB7hmKEgXYHhkZLYLoxMJKhCWEgQTjJAx3iLDoLW8esUo+kHsh5ZmjuKNpn X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:(9452136761055)(85827821059158)(67672495146484); X-Exchange-Antispam-Report-CFA-Test: BCL:0;PCL:0;RULEID:(8211001083)(6040522)(2401047)(5005006)(8121501046)(3231221)(11241501184)(944501327)(52105095)(10201501046)(3002001)(93006095)(93001095)(6041310)(20161123564045)(201703131423095)(201702281528075)(20161123555045)(201703061421075)(201703061406153)(20161123560045)(20161123558120)(20161123562045)(6072148)(201708071742011);SRVR:CO1PR15MB1078;BCL:0;PCL:0;RULEID:;SRVR:CO1PR15MB1078; X-Forefront-PRVS: 06339BAE63 X-Forefront-Antispam-Report: SFV:NSPM;SFS:(10019020)(366004)(39860400002)(396003)(39380400002)(346002)(376002)(199004)(189003)(2361001)(2906002)(316002)(5660300001)(76176011)(69596002)(51416003)(52116002)(446003)(52396003)(106356001)(47776003)(11346002)(86362001)(46003)(68736007)(305945005)(6116002)(486006)(478600001)(7736002)(16586007)(59450400001)(50466002)(39060400002)(1076002)(48376002)(36756003)(6916009)(2616005)(6506007)(53416004)(50226002)(6666003)(4326008)(8936002)(54906003)(476003)(97736004)(186003)(25786009)(6512007)(53936002)(16526019)(2351001)(81156014)(105586002)(81166006)(386003)(8676002)(6486002)(42262002);DIR:OUT;SFP:1102;SCL:1;SRVR:CO1PR15MB1078;H:castle.thefacebook.com;FPR:;SPF:None;LANG:en;PTR:InfoNoRecords;A:1;MX:1; Received-SPF: None (protection.outlook.com: fb.com does not designate permitted sender hosts) X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1;CO1PR15MB1078;23:3QOIsjS2mbYIEPT+2qVl+4NYIsM4oaAG94AHSIzKb?= =?us-ascii?Q?+7rX5Yd+fauCR9UEENhIEej60kmIoe0ssVtoKEWuYB+OLNFzhaOpwOavPBRD?= =?us-ascii?Q?LqKqebksfQPXF1xoEDoqAPrNEcTj5ClGDUZutaXFU1rLk8er04ZM7Fza1//2?= =?us-ascii?Q?ktCmDVvFWr79PqiLkuMDdMiI+ioSML/jt/54HwT04CSCgwAAlTGGmtD7BpBC?= =?us-ascii?Q?RxgvyFKO2cL6c9ZzW861Ll71WRtY/CZZ0nBWcCQJOibHTxAqrbetSA/CYk28?= =?us-ascii?Q?Mqdih4Ub6gjiQnA1GbzBrCfjzPs6IdGrouV0+ee/6tGBEAjMjJj9X2293i6I?= =?us-ascii?Q?g4pHS+Q45rKVQ7ruzcgKdMDG4YndWZaowIx4IBW6GPm6W/1nGG9htIqArozb?= =?us-ascii?Q?skUSIZSwn4OYLKmogRNN+ALWLgYxSL+UG/Nh163Eya7ugPE7tfN0D53A4yNi?= =?us-ascii?Q?q0k+eUhqTadB5HsZCf0A7nSuVPrntmfu/lVYnD2swIgiajaT4Lbq0cQdMBUM?= =?us-ascii?Q?GggQnkT2QEbWDZv8E6s95h8pXY7CaO3QmaTI/kvGOtdESMqMm/tuOTwVLc0w?= =?us-ascii?Q?q/7LtuPfLBEKBLSu+A7n1reLpoqpeeJPNEBxDgQraPe/hixAN6rqw7qQpUM4?= =?us-ascii?Q?XOhhrIilktfZJfuAXS9/9k0GVbZnqx5fJW5GEF133ZYIR5hnJXw++ZV5IraA?= =?us-ascii?Q?EKtKKG6FUaPOY1mOm0zSxUb1QZgSoKFbIRJa5cBqktVpBpxgSPic4RjuABhj?= =?us-ascii?Q?3gPw8h9pKclY4Wai+3/24utKeMvitJ8qlHg7YhQN65NdaLX/lHZq7isR3wW8?= =?us-ascii?Q?PnTazBqm68deG00wTxeMJ8ZdABvOJiXwv3V4yG1zY5F66TS8NOgu/V/SyqSn?= =?us-ascii?Q?FLQrZI4qem5/QbZI1iR8AP0Btn9Rp6WY5///SmAjqhAZs68fODArPfJLW9XQ?= =?us-ascii?Q?ALt6YgfzfKHkia8YwhjKdqiKwUIiE4iHGVDdlyhY9Rj0hIfMY5U8gPYaANL4?= =?us-ascii?Q?TU+oBaH6a06Q3O9Es9BsggzugXxvMv9780jXsmNlXmOnK/lEfU/GIf5t30VX?= =?us-ascii?Q?zUQWCkwHcyz9nWAyGJNDJR5DbQWPNMc7lfYYpviG1KCTUrigWbbuIDbkWiiU?= =?us-ascii?Q?SAw2o+EOXGq8PhTEGpPhhEI4dt4tVfDGXOdswCGoT2GuVsbUPuCF8U7kJAMW?= =?us-ascii?Q?I3yjQtjybRulMuWyUH/osmqsCnBOiFmorJ7sxzAtYtD1IbJXbXazhlRx9/x4?= =?us-ascii?Q?KKmpHrePKrodxNIkesuYCc2P7PeKcuZQJ2VAfkBLmerbPA0IvezcyUf0Wfwo?= =?us-ascii?Q?UoXdycTmbUlrK+Y07vUtGxpjuYkQ8wa2Aae+qpfDEip?= X-Microsoft-Antispam-Message-Info: vumF/pNLIzul/AqWb7qi8K/3nzfRI8fBEO3IXX32OgAc7HO7uNIBe/O4Wv3WoP7VW8pD2MN9pRDc5AeWTLQm6rk/8R9xp4uMiCdk9YulHZ713IWgPZ9NbT8aQQM/oISe5ZgD6zEQgEtuVL8eRH+t2XS5LVm/AubVbWTI5QhOvpCcuZP8dVC+S8EjWtGPne79 X-Microsoft-Exchange-Diagnostics: 1;CO1PR15MB1078;6:ZgLW8xyQaKYX49FPlaCM1H3gpgMLInyVZUweCAgJRNlQhTtD3OdpfWj3gr5jxhk3FwfeIfSTBZ8U8aCnFUvoHGFDjqmy6lSpYu0gVTDJ1Bm6n3yB/RkLWafswgkPRT2wQBTP2CFHGHUrcYtpl1zg1PL5TJ2kAnPSRYr1+543nGr4zGGmAk/girx08/pyfsZtpbAFFZCPRdmnocei3wPnIITYPntBK95L7uAjWKWIOlhTM2FZvP4hC9U+b1HKVBmZmmRjxWdhQoD5MaAh6agYsZkmOLscAiBSwISHd6RyXxqdnDc5D5P2TPrQkAfuFe9RW25ddNGcVp6/Q40mRtmWttTVBPRslh3Sf6bmQeYrn/owNuTxjg9ADxQ96bg9UePwtVgQmeDCO0BpI/M341ktKzzIs60FfWK1lIsDpSqME5y8Y+lMsRGSLlRr/wcY3zP6aoik+b7InHq+lO+bOvPADQ==;5:Esk9sBRoUlc1MMhjWzzwIMQ1qH5OYUSP2Yz7jgLQMxt2L73jzvPTqsz7WeQAJ1rFgxIkIc0RwJc/1b4Rt26U9DC7y5mP0A0+Ho0te2+4iRx0FJK3AVxkpt5j9GBK6Xz1sKPSE0nPuj48o8AYMKImrbvYPuuCwotdgtWEyNAIsU4=;24:oCB7C+wdHtuvkAsw0xPx6sE+TaXZdhVVT2whlIoiAGiZVIr2RWTLIvfZ5doCEQvNE4NEoF4wSBPa01WXoUWewTfzvPwY1jIxK0K+hQmYFwk= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1;CO1PR15MB1078;7:vnVZVi+GF4w62zmP1Mm9gHCJIjzw8gTIe3hazTipLgaogNKWrGfp30s6u79B4EidKiuh9RMD9GLYgdsv3t9dUnOBAU8utIjrK0mm9GIXuJ6yMJuBpt14qxOi303adXmxelkvl+YEiIO+8iR4V/9fAycAPgJD5Mc+bmI2xW6PptHRwr23IgxDjYTcesJPCiWZL+px0IzdSgC+5NA+C/28S1dnJFK+X+Wm8g70cjCht1Z5yLrrQop/7gl/71/va9c1;20:XXhyDVNlk6VFcymuKnc3mq5lI9ngSrcn56hRXZYhioCp+qXua41gOulja1gX+8LUW1pxkZFM748h7gcEUWDb8ld9NFKct4DdjSvP2LDxrJWJdcqPZ9WKF5CGHscv0DMyI6UacPg6WCOpR8Qlj50gb7V8NBEySKjaF/wkwHPJZrU= X-MS-Exchange-CrossTenant-OriginalArrivalTime: 05 Apr 2018 18:59:47.7675 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: d0aef898-857a-441a-cb28-08d59b27694a X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 8ae927fe-1255-47a7-a2af-5f3a069daaa2 X-MS-Exchange-Transport-CrossTenantHeadersStamped: CO1PR15MB1078 X-OriginatorOrg: fb.com X-Proofpoint-Virus-Version: vendor=fsecure engine=2.50.10432:,, definitions=2018-04-05_09:,, signatures=0 X-Proofpoint-Spam-Reason: safe X-FB-Internal: Safe Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org If memcg's usage is equal to the memory.low value, avoid reclaiming from this cgroup while there is a surplus of reclaimable memory. This sounds more logical and also matches memory.high and memory.max behavior: both are inclusive. Signed-off-by: Roman Gushchin Cc: Andrew Morton Cc: Johannes Weiner Cc: Michal Hocko Cc: Vladimir Davydov Cc: Tejun Heo Cc: kernel-team@fb.com Cc: linux-mm@kvack.org Cc: cgroups@vger.kernel.org Cc: linux-kernel@vger.kernel.org --- mm/memcontrol.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/mm/memcontrol.c b/mm/memcontrol.c index 78cf21f2a943..1cd6e9bf24f2 100644 --- a/mm/memcontrol.c +++ b/mm/memcontrol.c @@ -5608,14 +5608,14 @@ struct cgroup_subsys memory_cgrp_subsys = { }; /** - * mem_cgroup_low - check if memory consumption is below the normal range + * mem_cgroup_low - check if memory consumption is in the normal range * @root: the top ancestor of the sub-tree being checked * @memcg: the memory cgroup to check * * WARNING: This function is not stateless! It can only be used as part * of a top-down tree iteration, not for isolated queries. * - * Returns %true if memory consumption of @memcg is below the normal range. + * Returns %true if memory consumption of @memcg is in the normal range. * * @root is exclusive; it is never low when looked at directly * @@ -5709,7 +5709,7 @@ bool mem_cgroup_low(struct mem_cgroup *root, struct mem_cgroup *memcg) elow = min(elow, parent_elow * low_usage / siblings_low_usage); exit: memcg->memory.elow = elow; - return usage < elow; + return usage <= elow; } /** -- 2.14.3