From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail.lysator.liu.se (mail.lysator.liu.se [130.236.254.3]) by dpdk.org (Postfix) with ESMTP id 677DC1B4F9 for ; Fri, 5 Apr 2019 15:51:42 +0200 (CEST) Received: from mail.lysator.liu.se (localhost [127.0.0.1]) by mail.lysator.liu.se (Postfix) with ESMTP id B478B4000A for ; Fri, 5 Apr 2019 15:51:41 +0200 (CEST) Received: by mail.lysator.liu.se (Postfix, from userid 1004) id 63D2440010; Fri, 5 Apr 2019 15:51:41 +0200 (CEST) X-Spam-Checker-Version: SpamAssassin 3.4.1 (2015-04-28) on bernadotte.lysator.liu.se X-Spam-Level: X-Spam-Status: No, score=-0.9 required=5.0 tests=ALL_TRUSTED,AWL autolearn=disabled version=3.4.1 X-Spam-Score: -0.9 Received: from [192.168.1.59] (host-90-232-144-184.mobileonline.telia.com [90.232.144.184]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.lysator.liu.se (Postfix) with ESMTPSA id 5F8014000A for ; Fri, 5 Apr 2019 15:51:40 +0200 (CEST) To: dev@dpdk.org References: <20190405134542.28618-1-mattias.ronnblom@ericsson.com> From: =?UTF-8?Q?Mattias_R=c3=b6nnblom?= Message-ID: <7428acf8-fd06-fcc5-521b-37ee0fa1729a@ericsson.com> Date: Fri, 5 Apr 2019 15:51:39 +0200 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101 Thunderbird/60.6.1 MIME-Version: 1.0 In-Reply-To: <20190405134542.28618-1-mattias.ronnblom@ericsson.com> Content-Type: text/plain; charset=utf-8; format=flowed Content-Language: en-US Content-Transfer-Encoding: 8bit X-Virus-Scanned: ClamAV using ClamSMTP Subject: Re: [dpdk-dev] [RFC] eal: make rte_rand() MT safe X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 05 Apr 2019 13:51:42 -0000 On 2019-04-05 15:45, Mattias Rönnblom wrote: > The rte_rand() documentation left it unspecified if the rte_rand() was > multi-thread safe or not, and the implementation (based on lrand48()) > was not. > > This commit makes rte_rand() safe to use from any lcore thread by > using lrand48_r() and per-lcore random state structs. Besides the > obvious improvement in terms of correctness (for concurrent users), > this also much improves rte_rand() performance, since the threads no > longer shares state. For the single-threaded case, this patch causes > ~10% rte_rand() performance degradation. > It's a little unclear to me, if lrand48_r() exists in FreeBSD or not. Could someone confirm? Another question I have is in which section of the version.map file the new symbols should go. Experimental, or 19.05? The source interface is backward compatible, but the functions are no longer inline functions in the header file, and thus needs to go somewhere to be properly exported. From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from dpdk.org (dpdk.org [92.243.14.124]) by dpdk.space (Postfix) with ESMTP id D5F4FA0679 for ; Fri, 5 Apr 2019 15:51:45 +0200 (CEST) Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id 403951B4FD; Fri, 5 Apr 2019 15:51:44 +0200 (CEST) Received: from mail.lysator.liu.se (mail.lysator.liu.se [130.236.254.3]) by dpdk.org (Postfix) with ESMTP id 677DC1B4F9 for ; Fri, 5 Apr 2019 15:51:42 +0200 (CEST) Received: from mail.lysator.liu.se (localhost [127.0.0.1]) by mail.lysator.liu.se (Postfix) with ESMTP id B478B4000A for ; Fri, 5 Apr 2019 15:51:41 +0200 (CEST) Received: by mail.lysator.liu.se (Postfix, from userid 1004) id 63D2440010; Fri, 5 Apr 2019 15:51:41 +0200 (CEST) X-Spam-Checker-Version: SpamAssassin 3.4.1 (2015-04-28) on bernadotte.lysator.liu.se X-Spam-Level: X-Spam-Status: No, score=-0.9 required=5.0 tests=ALL_TRUSTED,AWL autolearn=disabled version=3.4.1 X-Spam-Score: -0.9 Received: from [192.168.1.59] (host-90-232-144-184.mobileonline.telia.com [90.232.144.184]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.lysator.liu.se (Postfix) with ESMTPSA id 5F8014000A for ; Fri, 5 Apr 2019 15:51:40 +0200 (CEST) To: dev@dpdk.org References: <20190405134542.28618-1-mattias.ronnblom@ericsson.com> From: =?UTF-8?Q?Mattias_R=c3=b6nnblom?= Message-ID: <7428acf8-fd06-fcc5-521b-37ee0fa1729a@ericsson.com> Date: Fri, 5 Apr 2019 15:51:39 +0200 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101 Thunderbird/60.6.1 MIME-Version: 1.0 In-Reply-To: <20190405134542.28618-1-mattias.ronnblom@ericsson.com> Content-Type: text/plain; charset="UTF-8"; format="flowed" Content-Language: en-US Content-Transfer-Encoding: 8bit X-Virus-Scanned: ClamAV using ClamSMTP Subject: Re: [dpdk-dev] [RFC] eal: make rte_rand() MT safe X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org Sender: "dev" Message-ID: <20190405135139.QLduWxpc5e32hhx9lh-XLJSStJyVRjqRlLWUQZXMFTI@z> On 2019-04-05 15:45, Mattias Rönnblom wrote: > The rte_rand() documentation left it unspecified if the rte_rand() was > multi-thread safe or not, and the implementation (based on lrand48()) > was not. > > This commit makes rte_rand() safe to use from any lcore thread by > using lrand48_r() and per-lcore random state structs. Besides the > obvious improvement in terms of correctness (for concurrent users), > this also much improves rte_rand() performance, since the threads no > longer shares state. For the single-threaded case, this patch causes > ~10% rte_rand() performance degradation. > It's a little unclear to me, if lrand48_r() exists in FreeBSD or not. Could someone confirm? Another question I have is in which section of the version.map file the new symbols should go. Experimental, or 19.05? The source interface is backward compatible, but the functions are no longer inline functions in the header file, and thus needs to go somewhere to be properly exported.