From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail.mhcomputing.net (master.mhcomputing.net [74.208.46.186]) by dpdk.org (Postfix) with ESMTP id 292F0C370 for ; Wed, 17 Jun 2015 06:39:24 +0200 (CEST) Received: by mail.mhcomputing.net (Postfix, from userid 1000) id 37BB080C502; Tue, 16 Jun 2015 21:36:54 -0700 (PDT) Date: Tue, 16 Jun 2015 21:36:54 -0700 From: Matthew Hall To: dev@dpdk.org Message-ID: <20150617043654.GA10337@mhcomputing.net> References: <9092314.MoyqUJ5VU2@xps13> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <9092314.MoyqUJ5VU2@xps13> User-Agent: Mutt/1.5.23 (2014-03-12) Subject: Re: [dpdk-dev] [dpdk-announce] important design choices - statistics - ABI X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: patches and discussions about DPDK List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 17 Jun 2015 04:39:24 -0000 On Wed, Jun 17, 2015 at 01:29:47AM +0200, Thomas Monjalon wrote: > There were some debates about software statistics disabling. > Should they be always on or possibly disabled when compiled? > We need to take a decision shortly and discuss (or agree) this proposal: > http://dpdk.org/ml/archives/dev/2015-June/019461.html This goes against the idea I have seen before that we should be moving toward a distro-friendly approach where one copy of DPDK can be used by multiple apps without having to rebuild it. It seems like it is also a bit ABI hostile according to the below goals / discussions. Jemalloc is also very high-performance code and still manages to allow enabling and disabling statistics at runtime. Are we sure it's impossible for DPDK or just theorizing? > During the development of the release 2.0, there was an agreement to keep > ABI compatibility or to bring new ABI while keeping old one during one release. > In case it's not possible to have this transition, the (exceptional) break > should be acknowledged by several developers. Personally to me it seems more important to preserve the ABI on patch releases, like 2.X.Y going to 2.X.Z. But maybe I missed something? > During the current development cycle for the release 2.1, the ABI question > arises many times in different threads. Most but not all of these examples point to a different issue which sometimes happens in libraries... often seen as "old-style" versus "new-style" C library interface. For example, in old-style like libpcap there are a lot of structs, both opaque and non-opaque, which the caller must allocate in order to run libpcap. However new-style libraries such as libcurl usually just have init functions which initialize all the secret structs based on some defaults and some user parameters and hide the actual structs from the user. If you want to adjust some you call an adjuster function that modifies the actual secret struct contents, with some enum saying what field to adjust, and the new value you want it to have. If you want to keep a stable ABI for a non-stable library like DPDK, there's a good chance you must begin hiding all these weird device specific structs all over the DPDK from the user needing to directly allocate and modify them. Otherwise the ABI breaks everytime you have to add adjustments, extensions, modifications to all these obscure special features. Matthew.