> -----Original Message----- > From: Bill Fischofer [mailto:bill.fischo...@linaro.org] > Sent: Thursday, January 12, 2017 2:22 PM > To: Savolainen, Petri (Nokia - FI/Espoo) <petri.savolainen@nokia-bell- > labs.com> > Cc: lng-odp@lists.linaro.org > Subject: Re: [lng-odp] [API-NEXT PATCHv6 2/5] linux-generic: packet: > implement reference apis > > On Thu, Jan 12, 2017 at 6:12 AM, Savolainen, Petri (Nokia - FI/Espoo) > <petri.savolai...@nokia-bell-labs.com> wrote: > > This patch is now merged, although I had some doubts that it has bad > impact on performance. Here are some performance results for couple of > simple, single thread packet alloc/free test cases. No references > involved, just plain packets as before. > > > > Test results before and after "linux-generic: packet: implement > reference apis": > > > > CPU cycles per operation > > before after > > packet_alloc 127.8 250.9 +96 % > > packet_alloc_multi 873.7 1538.8 +76 % > > packet_free 31 116.8 +277 % > > packet_free_multi 214.5 1369.2 +538 % > > packet_alloc_free 73.4 193.7 +164 % > > packet_alloc_free_multi 286.1 1228.8 +330 % > > > > > > Huge performance degradation. Numbers are now many times worse than > before or after my optimizations. To me this shows that almost a complete > rewrite (or revert) is needed. > > My guess is this is due to the atomics needed for reference counting > not being properly inlined internally. I know you did similar > optimizations for ticketlocks. Let me look into this and post a patch > that does the same for the atomics.
Atomics are inlined already. Also atomic operations should not be required if there's a single refence. -Petri