Received: by 10.223.176.46 with SMTP id f43csp475700wra; Wed, 24 Jan 2018 00:54:54 -0800 (PST) X-Google-Smtp-Source: AH8x226xEEH+rX5t1QRcKma8TRfodAzeE/yyG5iBL4w+j1POwzykdFAvO+rUqy30Q/oam9H88PNl X-Received: by 10.101.71.199 with SMTP id f7mr10242049pgs.91.1516784094246; Wed, 24 Jan 2018 00:54:54 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1516784094; cv=none; d=google.com; s=arc-20160816; b=FnypT+J7BfiqVFqBrHSvu6HeQgD2oTlnqGG1NNIOGm00uPXLsNRt7UYzOFrp1HJiDl z/1zh16IavGtK4Kl4ot6KmBOkHC7uKDEe0tdSNbd0tSrXLA29X1gPUbSP2QKTtSos2bR gf38bZvZ0guWcC43D/11F/y+0gkhc6Mrian1IW203/VszpBSmmgTSZkDcTD+UwtpYs6u xdbz+96gmY6qRe255qFPjfKU6OGN30lNNMuCeUKa8LMQsLpSfJmJ3FFSAhq/7obdxeW0 J7hsZu/TfgFUxWEnVLyZm0lSPF5vFbWGAVQBGa2ZRKk1IQivhddMlXXo5TnzJVt3nzHd vv7w== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:content-transfer-encoding :content-language:in-reply-to:mime-version:user-agent:date :message-id:from:references:cc:to:subject:dkim-signature :arc-authentication-results; bh=taytHbjZ8A9lzjdfocDMvh+IuVMjbXZsvrjlF/Vi/NY=; b=r7GBEKOyPuw3RCw/fRc1OD1X123rBu2NA07sYRswhLE1cfESgN7gTcT3IqG0fHKgWI jlI9yeXnOkaDCUcBo+70Y1HdRr0Pos3maYFRTHMSL4r6ognbCy+LS//41pAC1Cy7xUAT NjAmF9jTP6Ih065onTR1MCtQxREJBkHFabOGbHYNOZM9pgIx1veJ+dQeo+vrERzR0geR eVo9koLv13U3tqg9BbS3aRwEkb8Q+66mbtvdlSMjKwmfpmKdZIqfci6TXIdwQlOKKY1y IVvybpHxCxuObZPhXqkrdTeCRu0hd2qT5CTcW4C3nNjoMnSrfN02r4ULnnS83T76DBXe EGgQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=fail header.i=@prevas.dk header.s=ironport2 header.b=aBc0cok7; 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 Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id a14si13668685pgu.361.2018.01.24.00.54.39; Wed, 24 Jan 2018 00:54:54 -0800 (PST) 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=fail header.i=@prevas.dk header.s=ironport2 header.b=aBc0cok7; 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 Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S932558AbeAXIyN (ORCPT + 99 others); Wed, 24 Jan 2018 03:54:13 -0500 Received: from mail02.prevas.se ([62.95.78.10]:6174 "EHLO mail02.prevas.se" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S932133AbeAXIyM (ORCPT ); Wed, 24 Jan 2018 03:54:12 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=prevas.dk; i=@prevas.dk; l=2405; q=dns/txt; s=ironport2; t=1516784051; x=1548320051; h=subject:to:cc:references:from:message-id:date: mime-version:in-reply-to:content-transfer-encoding; bh=UzYz7rfxLglF8oXAmV+AzYQr1e2e95erpfpP/OXpVic=; b=aBc0cok746VC9keAV4WRt/k0AUkY9RAMeDlXf3WRsgHd//j5PXYGVGKU sLfLvnakJ2YRdk60Twgu6qvHYbKxwTE/TZm0YzeMB/+06PS2N27Hc/TMU BZxXknBacKohpm66ozl1qZbdtXXlrujzXOYfmIEe9CMTnzTCTiRF5eYnQ Q=; X-IronPort-AV: E=Sophos;i="5.46,406,1511823600"; d="scan'208";a="2955914" Received: from vmprevas4.prevas.se (HELO smtp.prevas.se) ([172.16.8.104]) by ironport2.prevas.se with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 24 Jan 2018 09:54:10 +0100 Received: from [172.16.11.49] (172.16.8.31) by smtp.prevas.se (172.16.8.104) with Microsoft SMTP Server (TLS) id 14.3.361.1; Wed, 24 Jan 2018 09:54:10 +0100 Subject: Re: [PATCH] lib/strscpy: remove word-at-a-time optimization. To: Andrey Ryabinin , Andrew Morton , Linus Torvalds CC: , Kees Cook , Eryu Guan , Alexander Potapenko , Chris Metcalf , David Laight , Dmitry Vyukov , References: <20180109163745.3692-1-aryabinin@virtuozzo.com> <50fcfba8-fc16-b4a1-d117-24ebbe959c0c@virtuozzo.com> From: Rasmus Villemoes Message-ID: Date: Wed, 24 Jan 2018 09:54:09 +0100 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:52.0) Gecko/20100101 Thunderbird/52.5.0 MIME-Version: 1.0 In-Reply-To: <50fcfba8-fc16-b4a1-d117-24ebbe959c0c@virtuozzo.com> Content-Type: text/plain; charset="utf-8" Content-Language: en-US Content-Transfer-Encoding: 7bit X-Originating-IP: [172.16.8.31] Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On 2018-01-09 17:47, Andrey Ryabinin wrote: > Attached user space program I used to see the difference. > Usage: > gcc -02 -o strscpy strscpy_test.c > ./strscpy {b|w} src_str_len count > > src_str_len - length of source string in between 1-4096 > count - how many strscpy() to execute. > > Also I've noticed something strange. I'm not sure why, but certain > src_len values (e.g. 30) drives branch predictor crazy causing worse than usual results > for byte-at-a-time copy: I see something similar, but at the 30->31 transition, and the branch-misses remain at 1-3% for higher values, until 42 where it drops back to 0%. Anyway, I highly doubt we do a lot of string copies of strings longer then 32. $ perf stat ./strscpy_test b 30 10000000 Performance counter stats for './strscpy_test b 30 10000000': 156,777082 task-clock (msec) # 0,999 CPUs utilized 0 context-switches # 0,000 K/sec 0 cpu-migrations # 0,000 K/sec 48 page-faults # 0,306 K/sec 584.646.177 cycles # 3,729 GHz stalled-cycles-frontend stalled-cycles-backend 2.580.599.614 instructions # 4,41 insns per cycle 660.114.283 branches # 4210,528 M/sec 4.891 branch-misses # 0,00% of all branches 0,156970910 seconds time elapsed $ perf stat ./strscpy_test b 31 10000000 Performance counter stats for './strscpy_test b 31 10000000': 258,533250 task-clock (msec) # 0,999 CPUs utilized 0 context-switches # 0,000 K/sec 0 cpu-migrations # 0,000 K/sec 50 page-faults # 0,193 K/sec 965.505.138 cycles # 3,735 GHz stalled-cycles-frontend stalled-cycles-backend 2.660.773.463 instructions # 2,76 insns per cycle 680.141.051 branches # 2630,768 M/sec 19.150.367 branch-misses # 2,82% of all branches 0,258725192 seconds time elapsed Rasmus