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 kanga.kvack.org (kanga.kvack.org [205.233.56.17]) by smtp.lore.kernel.org (Postfix) with ESMTP id 666AFEB64DA for ; Tue, 18 Jul 2023 11:23:46 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 63A3F8D0001; Tue, 18 Jul 2023 07:23:45 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 5EA7F6B0074; Tue, 18 Jul 2023 07:23:45 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 48B158D0001; Tue, 18 Jul 2023 07:23:45 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0017.hostedemail.com [216.40.44.17]) by kanga.kvack.org (Postfix) with ESMTP id 370B06B0071 for ; Tue, 18 Jul 2023 07:23:45 -0400 (EDT) Received: from smtpin29.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay02.hostedemail.com (Postfix) with ESMTP id CD9331203AE for ; Tue, 18 Jul 2023 11:23:44 +0000 (UTC) X-FDA: 81024497568.29.C29EC59 Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.133.124]) by imf28.hostedemail.com (Postfix) with ESMTP id E7B62C000D for ; Tue, 18 Jul 2023 11:23:40 +0000 (UTC) Authentication-Results: imf28.hostedemail.com; dkim=pass header.d=redhat.com header.s=mimecast20190719 header.b="bM/TNRGC"; spf=pass (imf28.hostedemail.com: domain of david@redhat.com designates 170.10.133.124 as permitted sender) smtp.mailfrom=david@redhat.com; dmarc=pass (policy=none) header.from=redhat.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1689679422; a=rsa-sha256; cv=none; b=yHop7iu7MVp0u7bEtf1fJk/yd6YZD5+dA8EV0kkyAzhx5cXCfzZ8EIJ51bCIu1EHVLNFj0 W8F88NjgRlSNwBtld5GU5JoYvmmLG0445LC20ql5f4YVjVPQ3Oz7O6g/5J8VHD6FGGEC3H NeVRgZcl7Z0z48LBeqDPvbrsFTdNhgM= ARC-Authentication-Results: i=1; imf28.hostedemail.com; dkim=pass header.d=redhat.com header.s=mimecast20190719 header.b="bM/TNRGC"; spf=pass (imf28.hostedemail.com: domain of david@redhat.com designates 170.10.133.124 as permitted sender) smtp.mailfrom=david@redhat.com; dmarc=pass (policy=none) header.from=redhat.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1689679422; h=from:from:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:cc:mime-version:mime-version: content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references:dkim-signature; bh=E25e9dvQIenP2167tOlvP3NdJMvW6/ZDuSZb/NoTrxg=; b=yp6a7+mE/6YqCBCaW3lUDF2zZICYudkRj96wzj0rMU/70r0wV3944dvxpSxNSLdj8Fijos 5919CysqYm8bjwF1hO85DM+AyMuCOg0Q2dAWlPcZHNA4q5KudCK1ijOGkt7IxK1EPKaD/W MY4OW03lp9V3q9psSVQ3NFuawp4onIY= DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1689679420; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=E25e9dvQIenP2167tOlvP3NdJMvW6/ZDuSZb/NoTrxg=; b=bM/TNRGC6ZNF+H/NKLH7/qBFAomXtYtgN0I9hc8S2oBq+t+SuOgSG04wBv7uUnqpjthJFs 9Jl2yoFn2JauAK98psAOstJpM0ijCOxtTeCclwK6GMD+fiXAQ0zMFjrALYtJ9c95G2PuRq aYIXVeJ3/Kh206Hy6S7AXIHS0JddYvE= Received: from mail-wm1-f70.google.com (mail-wm1-f70.google.com [209.85.128.70]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-668-Vbca9qCVPj6KWmg2iCnl6A-1; Tue, 18 Jul 2023 07:23:38 -0400 X-MC-Unique: Vbca9qCVPj6KWmg2iCnl6A-1 Received: by mail-wm1-f70.google.com with SMTP id 5b1f17b1804b1-3fa8db49267so29743125e9.3 for ; Tue, 18 Jul 2023 04:23:38 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1689679418; x=1692271418; h=content-transfer-encoding:in-reply-to:subject:organization:from :references:cc:to:content-language:user-agent:mime-version:date :message-id:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=E25e9dvQIenP2167tOlvP3NdJMvW6/ZDuSZb/NoTrxg=; b=X3YwL6j+/GHRatPL0Lc8sdUlwlGqKLxvO2rhMKh6QIhnF8T16CJKlHqkNXORkA+MWJ D+9N9beRoJO4fIpelxy4V6Mh/vKhKaJIIUJPBhJgGLfQOrRZtOW2kKMtVzyXtlgRPJWD ISiDtSu2VfhKZd4U4qZxyxALfXqxf9ypRixpDsvIrLYj1FdMtUZocB5FzeOWqWWaUDuc Yj/B4exFSVmxwcWgHJWgzoQq8ZSRRb+QroEcGsHJWAud8vFaVs0QD77G2ljTeESz0Bst RM9p73KDU4W6CUuRAULdaaUK9RywiK0qozNbMyrH51PSprBXXvHCT8eR+FTDZHM1O4oi CD5w== X-Gm-Message-State: ABy/qLZJyT0IUA+g5+LLUzH08gQQLvuIsyEMXwmvSVJeUohyIlEwXn2s 98sEDiUUInOtrKt9+Wxe/4WG2tsWPNREDfSULVZ8Zr09YonV3DNvPIWYVFz4aNBxj6BWSaf2i8D Vn63MbPABEv0= X-Received: by 2002:a1c:750a:0:b0:3fb:f926:4937 with SMTP id o10-20020a1c750a000000b003fbf9264937mr1554395wmc.31.1689679417731; Tue, 18 Jul 2023 04:23:37 -0700 (PDT) X-Google-Smtp-Source: APBJJlHcfZuXNRThSAK3VX4YePcYyb17v2vQFJ2pWXoCB5RExjoYRAh4jCIM+f39eOI/dJI2PCAPGg== X-Received: by 2002:a1c:750a:0:b0:3fb:f926:4937 with SMTP id o10-20020a1c750a000000b003fbf9264937mr1554376wmc.31.1689679417344; Tue, 18 Jul 2023 04:23:37 -0700 (PDT) Received: from ?IPV6:2003:cb:c740:6200:84e1:eabc:8e2:7429? (p200300cbc740620084e1eabc08e27429.dip0.t-ipconnect.de. [2003:cb:c740:6200:84e1:eabc:8e2:7429]) by smtp.gmail.com with ESMTPSA id o18-20020a05600c379200b003fa973e6612sm9994481wmr.44.2023.07.18.04.23.36 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Tue, 18 Jul 2023 04:23:36 -0700 (PDT) Message-ID: <1314fe0e-dd32-bf10-0a33-2b571dad70bd@redhat.com> Date: Tue, 18 Jul 2023 13:23:36 +0200 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:102.0) Gecko/20100101 Thunderbird/102.12.0 To: Ryan Roberts , Andrew Morton , Shuah Khan , =?UTF-8?B?SsOpcsO0bWUgR2xpc3Nl?= , Mark Brown , John Hubbard , Florent Revest , Peter Xu Cc: linux-kernel@vger.kernel.org, linux-mm@kvack.org, linux-kselftest@vger.kernel.org References: <20230717103152.202078-1-ryan.roberts@arm.com> <20230717103152.202078-7-ryan.roberts@arm.com> <20501a7c-19f6-4154-aebc-49df04c9b043@redhat.com> <2e5baba4-c8ef-9da4-a2d6-3cf383ed05bd@arm.com> From: David Hildenbrand Organization: Red Hat Subject: Re: [PATCH v2 6/8] selftests/mm: Make migration test robust to failure In-Reply-To: <2e5baba4-c8ef-9da4-a2d6-3cf383ed05bd@arm.com> X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Content-Language: en-US Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 8bit X-Rspamd-Server: rspam08 X-Rspamd-Queue-Id: E7B62C000D X-Stat-Signature: u8cd77hyfj6yuhbnjuob4zpib4yrfpzn X-Rspam-User: X-HE-Tag: 1689679420-996403 X-HE-Meta: U2FsdGVkX185CHYdyGf7EJflj9IOhM0KaA5awm2NQxtkCarYunYPMbDP/AaocG0Cwa/wqkVDlqgaZCtn31PnfrdVCQZVZ8VusGhzVh4S69ImUa2i/t/eXnitZJ5qllirJ6fg5z5AspUOBwk/mZoNUM4bhUl5HoaZmvQ8PRQRJX4xD1dnkKIu+/0bKrt5xyKbX+dMhytZBprJQslKM4SFADct4OM6WRRIc/TWFzxIW4WX72dH0MHloPjWW+h6cwFroMr8FfTH6GYucDrC5f8CMbMpIzW15DHJFfYacw7z4TNVPED+U7vrbntEijlgJ4AjeXJwkwSXzynm2r1y8gjH1ewFDx87QrAU+CHFOwzV+DKuceGmh8t9iDlN06K4Jof9ofGhY90LINBL6rUvE8XmV+jTzGKndOeBUESvpRF/oSfpicU2osincp1Lw8VOgwpMKmWUNYxmoG1vJHnLdStd//oSGkunQIIRVpbV1Kz0Cw2s7YyCjoTdVOxb9kQLatSmfTMi7Xpned7w8x17AF0p0ck4c54xgJzPEMwLMjAxd0yH7eq4xwjzk+ya9krjhdXoeE82w7hMouPXE+QQ8aAMVmERKRZqFLRx8L0MgIBUcCu6DwR2RERxNiC1Fjae3cSAPMPwlzF/lNM1/pe+w8jVaxU22f6QjqN2Y8kATM4k/O+G6Fcjyw5ohUZpcgINRcWq3Af/hYFe5A5uiCD5mC1mTDuXjJ2JXKD2RYmOjDVt9m7bCD0I2wI2gLrtlO/4YJQrPPunVCt8DMBHSo6IP6nuV6krE2l/DKUwsz8t7niUMCOYJCqrKko8yoYeTBg/orYaMJmodwjNNLt6zaElrP/d4tPleqZgZxOI1WAjjEkoVTJbu+ylS5cCmMp1+mF4P1jRM8zfQ8wDymO4qI/pixne6bL2tue/wDMUYuq+GLIfz+kF1DIXNQPRHngEPFQYJn34wz2ARK9P35oll9hkBPy c7QKz7ig iTpUsG5tI1ky37kYZdmHqWxZ408NmAN0nAVCCF1kXhqF3yFistMpAhodTVHa6P5SuSp7eA9KMt6nt6eAz/wmNAyO5lGb7C1x0lmWr+S+vLS2aZchJz9waMsTgWTiKzA1znSd41jJ2kQ1j/4KQ1yFN8oP1NOLTx2zoJZsHBm+k3Pgc8ysaNab9Wuy4nrPmcjKdYMcN6B9ZsPM8DC38vBMWjbrw+8Vn/2BwzLa73Ee52RCPGbEFBhRSR4VBLlZsfQrOK0XzaiBWmoT5v0zkLmDnwnJAampUEprulkrEbYp9yvX5nD6WF9wTWS0fJVnsu+/BK7vMZKj/qHmyHQSkeUYQbd6ymJmiZhMqKT6k X-Bogosity: Ham, tests=bogofilter, spamicity=0.000000, version=1.2.4 Sender: owner-linux-mm@kvack.org Precedence: bulk X-Loop: owner-majordomo@kvack.org List-ID: On 18.07.23 12:49, Ryan Roberts wrote: > On 17/07/2023 18:40, David Hildenbrand wrote: >> On 17.07.23 12:31, Ryan Roberts wrote: >>> The `migration` test currently has a number of robustness problems that >>> cause it to hang and leak resources. >>> >>> Timeout: There are 3 tests, which each previously ran for 60 seconds. >>> However, the timeout in mm/settings for a single test binary was set to >>> 45 seconds. So when run using run_kselftest.sh, the top level timeout >>> would trigger before the test binary was finished. Solve this by meeting >>> in the middle; each of the 3 tests now runs for 20 seconds (for a total >>> of 60), and the top level timeout is set to 90 seconds. >>> >>> Leaking child processes: the `shared_anon` test fork()s some children >>> but then an ASSERT() fires before the test kills those children. The >>> assert causes immediate exit of the parent and leaking of the children. >>> Furthermore, if run using the run_kselftest.sh wrapper, the wrapper >>> would get stuck waiting for those children to exit, which never happens. >>> Solve this by deferring any asserts until after the children are killed. >>> The same pattern is used for the threaded tests for uniformity. >>> >>> With these changes, the test binary now runs to completion on arm64, >>> with 2 tests passing and the `shared_anon` test failing. >>> >>> Signed-off-by: Ryan Roberts >>> --- >>>   tools/testing/selftests/mm/migration.c | 14 ++++++++++---- >>>   tools/testing/selftests/mm/settings    |  2 +- >>>   2 files changed, 11 insertions(+), 5 deletions(-) >>> >>> diff --git a/tools/testing/selftests/mm/migration.c >>> b/tools/testing/selftests/mm/migration.c >>> index 379581567f27..189d7d9070e8 100644 >>> --- a/tools/testing/selftests/mm/migration.c >>> +++ b/tools/testing/selftests/mm/migration.c >>> @@ -15,7 +15,7 @@ >>>   #include >>>     #define TWOMEG (2<<20) >>> -#define RUNTIME (60) >>> +#define RUNTIME (20) >>>     #define ALIGN(x, a) (((x) + (a - 1)) & (~((a) - 1))) >>>   @@ -118,6 +118,7 @@ TEST_F_TIMEOUT(migration, private_anon, 2*RUNTIME) >>>   { >>>       uint64_t *ptr; >>>       int i; >>> +    int ret; >>>         if (self->nthreads < 2 || self->n1 < 0 || self->n2 < 0) >>>           SKIP(return, "Not enough threads or NUMA nodes available"); >>> @@ -131,9 +132,10 @@ TEST_F_TIMEOUT(migration, private_anon, 2*RUNTIME) >>>           if (pthread_create(&self->threads[i], NULL, access_mem, ptr)) >>>               perror("Couldn't create thread"); >>>   -    ASSERT_EQ(migrate(ptr, self->n1, self->n2), 0); >>> +    ret = migrate(ptr, self->n1, self->n2); >>>       for (i = 0; i < self->nthreads - 1; i++) >>>           ASSERT_EQ(pthread_cancel(self->threads[i]), 0); >>> +    ASSERT_EQ(ret, 0); >> >> Why is that required? This does not involve fork. > > It's not required. I was just trying to keep everything aligned to the same pattern. > >> >>>   } >>>     /* >>> @@ -144,6 +146,7 @@ TEST_F_TIMEOUT(migration, shared_anon, 2*RUNTIME) >>>       pid_t pid; >>>       uint64_t *ptr; >>>       int i; >>> +    int ret; >>>         if (self->nthreads < 2 || self->n1 < 0 || self->n2 < 0) >>>           SKIP(return, "Not enough threads or NUMA nodes available"); >>> @@ -161,9 +164,10 @@ TEST_F_TIMEOUT(migration, shared_anon, 2*RUNTIME) >>>               self->pids[i] = pid; >>>       } >>>   -    ASSERT_EQ(migrate(ptr, self->n1, self->n2), 0); >>> +    ret = migrate(ptr, self->n1, self->n2); >>>       for (i = 0; i < self->nthreads - 1; i++) >>>           ASSERT_EQ(kill(self->pids[i], SIGTERM), 0); >>> +    ASSERT_EQ(ret, 0); >> >> >> Might be cleaner to also: > > Or instead of? I agree this is neater, so will undo the moving of the ASSERT() > and rely on this prctl. I was thinking about possible races when our parent process already quits before our child managed to set the prctl. prctl() won't do anything in that case, hmmmm. But similarly, existing code might already trigger the migrate() + kill before the child processes even started to access_mem(). Racy :) -- Cheers, David / dhildenb