On 11/17/16 11:36, Savolainen, Petri (Nokia - FI/Espoo) wrote:
I have reported a bug https://bugs.linaro.org/show_bug.cgi?id=2595 about the 
new VLAN test hang. Could this be the same issue? It hangs for me sometimes, 
most times not. It happens both at the tip of the master and api-next.

-Petri

Vlan testing hang runs:
test/linux-generic/mmap_vlan_ins/mmap_vlan_ins.sh

where it can hang only if your #!/bin/sh does not support this syntax for KILL command.

# Listen on veth pipe and write to pcap Send pcap
plat_mmap_vlan_ins${EXEEXT} pktiop0p1 pcap:out=${PCAP_OUT} \
    00:02:03:04:05:06 00:08:09:0a:0b:0c &
P1=$!
# Send pcap file to veth interface
plat_mmap_vlan_ins${EXEEXT} pcap:in=${PCAP_IN} pktiop0p1 \
    01:02:03:04:05:06 01:08:09:0a:0b:0c &
P2=$!

sleep 1
kill -s INT ${P1}
kill -s INT ${P2}


But for me it works well with both /bin/sh and /bin/bash


In your case 'pktio_main' binary rolls in infinite loop. So I would say it's different issues.

Maxim.


-----Original Message-----
From: Maxim Uvarov [mailto:maxim.uva...@linaro.org]
Sent: Wednesday, November 16, 2016 10:03 PM
To: Bill Fischofer <bill.fischo...@linaro.org>; Savolainen, Petri (Nokia -
FI/Espoo) <petri.savolai...@nokia-bell-labs.com>; Mike Holmes
<mike.hol...@linaro.org>
Cc: lng-odp-forward <lng-odp@lists.linaro.org>
Subject: Re: [lng-odp] [API-NEXT PATCH v3 00/19] pool optimization

I can not test patch by patch this series because it fails (one time it
was TM, one time kernel died, other time OOM killer killed tests then
hang kernel).

And for all patches test/common_plat/validation/api/pktio/pktio_main
hangs forever:


Program received signal SIGINT, Interrupt.
0x00002afbe69ffb80 in __nanosleep_nocancel () at
../sysdeps/unix/syscall-template.S:81
81    in ../sysdeps/unix/syscall-template.S
(gdb) bt
#0  0x00002afbe69ffb80 in __nanosleep_nocancel () at
../sysdeps/unix/syscall-template.S:81
#1  0x0000000000415ced in odp_pktin_recv_tmo (queue=...,
packets=packets@entry=0x7ffed64d8bd0, num=num@entry=1,
      wait=wait@entry=18446744073709551615) at
../../../platform/linux-generic/odp_packet_io.c:1584
#2  0x00000000004047fa in recv_packets_tmo (pktio=pktio@entry=0x2,
pkt_tbl=pkt_tbl@entry=0x7ffed64d9500,
      seq_tbl=seq_tbl@entry=0x7ffed64d94b0, num=num@entry=1,
mode=mode@entry=RECV_TMO, tmo=tmo@entry=18446744073709551615,
ns=ns@entry=0)
      at
../../../../../../test/common_plat/validation/api/pktio/pktio.c:515
#3  0x00000000004075f8 in test_recv_tmo (mode=RECV_TMO) at
../../../../../../test/common_plat/validation/api/pktio/pktio.c:940
#4  0x00002afbe61cc482 in run_single_test () from
/usr/local/lib/libcunit.so.1
#5  0x00002afbe61cc0b2 in run_single_suite () from
/usr/local/lib/libcunit.so.1
#6  0x00002afbe61c9d55 in CU_run_all_tests () from
/usr/local/lib/libcunit.so.1
#7  0x00002afbe61ce245 in basic_run_all_tests () from
/usr/local/lib/libcunit.so.1
#8  0x00002afbe61cdfe7 in CU_basic_run_tests () from
/usr/local/lib/libcunit.so.1
#9  0x0000000000409361 in odp_cunit_run () at
../../../../test/common_plat/common/odp_cunit_common.c:298
#10 0x00002afbe6c2ff45 in __libc_start_main (main=0x403850 <main>,
argc=1, argv=0x7ffed64d9878, init=<optimized out>,
      fini=<optimized out>, rtld_fini=<optimized out>,
stack_end=0x7ffed64d9868) at libc-start.c:287
#11 0x000000000040387e in _start ()
(gdb) up
#1  0x0000000000415ced in odp_pktin_recv_tmo (queue=...,
packets=packets@entry=0x7ffed64d8bd0, num=num@entry=1,
      wait=wait@entry=18446744073709551615) at
../../../platform/linux-generic/odp_packet_io.c:1584
1584            nanosleep(&ts, NULL);
(gdb) p ts
$1 = {tv_sec = 0, tv_nsec = 1000}
(gdb) l
1579                }
1580
1581                wait--;
1582            }
1583
1584            nanosleep(&ts, NULL);
1585        }
1586    }
1587
1588    int odp_pktin_recv_mq_tmo(const odp_pktin_queue_t queues[],
unsigned num_q,
(gdb) up
#2  0x00000000004047fa in recv_packets_tmo (pktio=pktio@entry=0x2,
pkt_tbl=pkt_tbl@entry=0x7ffed64d9500,
      seq_tbl=seq_tbl@entry=0x7ffed64d94b0, num=num@entry=1,
mode=mode@entry=RECV_TMO, tmo=tmo@entry=18446744073709551615,
ns=ns@entry=0)
      at
../../../../../../test/common_plat/validation/api/pktio/pktio.c:515
515                n = odp_pktin_recv_tmo(pktin[0], pkt_tmp, num - num_rx,
(gdb) p num - num_rx
$2 = 1
(gdb) l
510        /** Multiple odp_pktin_recv_tmo()/odp_pktin_recv_mq_tmo()
calls may be
511         *  required to discard possible non-test packets. */
512        do {
513            ts1 = odp_time_global();
514            if (mode == RECV_TMO)
515                n = odp_pktin_recv_tmo(pktin[0], pkt_tmp, num - num_rx,
516                               tmo);
517            else
518                n = odp_pktin_recv_mq_tmo(pktin, (unsigned)num_q,
519                              from, pkt_tmp,
(gdb) p tmo
$3 = 18446744073709551615


I applied patches and following script under root:
CLEANUP=0 GIT_URL=/opt/Linaro/odp3.git GIT_BRANCH=api-next ./build.sh

Need more investigation into this issue... Not applied yet.

Maxim.

On 11/16/16 02:58, Bill Fischofer wrote:
Trying again as the repost doesn't seem to show up on the list either.

For this series:

Reviewed-and-tested-by: Bill Fischofer <bill.fischo...@linaro.org
<mailto:bill.fischo...@linaro.org>>

On Tue, Nov 15, 2016 at 5:55 PM, Bill Fischofer
<bill.fischo...@linaro.org <mailto:bill.fischo...@linaro.org>> wrote:

     Reposting this since it doesn't seem to have made it to the
     mailing list.

     For this series:

     Reviewed-and-tested-by: Bill Fischofer <bill.fischo...@linaro.org
     <mailto:bill.fischo...@linaro.org>>

     On Tue, Nov 15, 2016 at 8:41 AM, Bill Fischofer
     <bill.fischo...@linaro.org <mailto:bill.fischo...@linaro.org>>
wrote:
         For this series:

         Reviewed-and-tested-by: Bill Fischofer
         <bill.fischo...@linaro.org <mailto:bill.fischo...@linaro.org>>

         On Thu, Nov 10, 2016 at 5:07 AM, Petri Savolainen
         <petri.savolai...@nokia.com
         <mailto:petri.savolai...@nokia.com>> wrote:

             Pool performance is optimized by using a ring as the
             global buffer storage.
             IPC build is disabled, since it needs large modifications
             due to dependency to
             pool internals. Old pool implementation was based on locks
             and linked list of
             buffer headers. New implementation maintain a ring of
             buffer handles, which
             enable fast, burst based allocs and frees. Also ring
             scales better with number
             of cpus than a list (enq and deq operations update
             opposite ends of the pool).

             L2fwd link rate (%), 2 x 40GE, 64 byte packets

                     direct-  parallel-               atomic-
             cpus    orig    direct  diff    orig parall  diff    orig
               atomic  diff
             1       7 %     8 %     1 %     6 %  6 %     2 %     5.4
             %   5.6 %   4 %
             2       14 %    15 %    7 %     9 %  9 %     5 %     8 %
                9 %     8 %
             4       28 %    30 %    6 %     13 % 14 %    13 %    12 %
               15 %    19 %
             6       42 %    44 %    6 %     16 % 19 %    19 %    8 %
                20 %    150 %
             8       46 %    59 %    28 %    19 % 23 %    26 %    18 %
               24 %    34 %
             10      55 %    57 %    3 %     20 % 27 %    37 %    8 %
                28 %    264 %
             12      56 %    56 %    -1 %    22 % 31 %    43 %    7 %
                32 %    357 %

             Max packet rate of NICs are reached with 10-12 cpu on
             direct mode. Otherwise,
             all cases were improved. Especially, scheduler driven
             cases suffered on bad
             pool scalability.

             changed in v3:
             * rebased
             * ipc disabled with #ifdef
             * added support for multi-segment packets
             * API: added explicit limits for packet length in alloc
calls
             * Corrected validation test and example application bugs
             found during
               segmentation implementation

             changed in v2:
             * rebased to api-next branch
             * added a comment that ring size must be larger than
             number of items in it
             * fixed clang build issue
             * added parens in align macro

             v1 reviews:
             Reviewed-by: Brian Brooks <brian.bro...@linaro.org
             <mailto:brian.bro...@linaro.org>>



             Petri Savolainen (19):
               linux-gen: ipc: disable build of ipc pktio
               linux-gen: pktio: do not free zero packets
               linux-gen: ring: created common ring implementation
               linux-gen: align: added round up power of two
               linux-gen: pool: reimplement pool with ring
               linux-gen: ring: added multi enq and deq
               linux-gen: pool: use ring multi enq and deq operations
               linux-gen: pool: optimize buffer alloc
               linux-gen: pool: clean up pool inlines functions
               linux-gen: pool: ptr instead of hdl in buffer_alloc_multi
               test: validation: buf: test alignment
               test: performance: crypto: use capability to select max
             packet
               test: correctly initialize pool parameters
               test: validation: packet: fix bugs in tailroom and
             concat tests
               linux-gen: packet: added support for segmented packets
               test: validation: packet: improved multi-segment alloc
test
               api: packet: added limits for packet len on alloc
               linux-gen: packet: remove zero len support from alloc
               linux-gen: packet: enable multi-segment packets

              example/generator/odp_generator.c                 |    2 +-
              include/odp/api/spec/packet.h                 |    9 +-
              include/odp/api/spec/pool.h             |    6 +
              platform/linux-generic/Makefile.am <http://le.am>
                    |    1 +
              .../include/odp/api/plat/packet_types.h           |    6 +-
              .../include/odp/api/plat/pool_types.h             |    6 -
              .../linux-generic/include/odp_align_internal.h    |   34 +-
              .../linux-generic/include/odp_buffer_inlines.h    |  167 +-
-
              .../linux-generic/include/odp_buffer_internal.h   |  120 +-
              .../include/odp_classification_datamodel.h        |    2 +-
              .../linux-generic/include/odp_config_internal.h   |   55 +-
              .../linux-generic/include/odp_packet_internal.h   |   87 +-
              platform/linux-generic/include/odp_pool_internal.h |  289
             +---
              platform/linux-generic/include/odp_ring_internal.h |  176
+++
              .../linux-generic/include/odp_timer_internal.h    |    4 -
              platform/linux-generic/odp_buffer.c               |   22 +-
              platform/linux-generic/odp_classification.c       |   25 +-
              platform/linux-generic/odp_crypto.c               |   12 +-
              platform/linux-generic/odp_packet.c               |  717
             ++++++++--
              platform/linux-generic/odp_packet_io.c            |    2 +-
              platform/linux-generic/odp_pool.c                 | 1440
             ++++++++------------
              platform/linux-generic/odp_queue.c                |    4 +-
              platform/linux-generic/odp_schedule.c             |  102 +-
              platform/linux-generic/odp_schedule_ordered.c     |    4 +-
              platform/linux-generic/odp_timer.c                |    3 +-
              platform/linux-generic/pktio/dpdk.c               |   10 +-
              platform/linux-generic/pktio/ipc.c                |    3 +-
              platform/linux-generic/pktio/loop.c               |    2 +-
              platform/linux-generic/pktio/netmap.c             |   14 +-
              platform/linux-generic/pktio/socket.c             |   17 +-
              platform/linux-generic/pktio/socket_mmap.c        |   10 +-
              test/common_plat/performance/odp_crypto.c         |   47 +-
              test/common_plat/performance/odp_pktio_perf.c     |    2 +-
              test/common_plat/performance/odp_scheduling.c     |    8 +-
              test/common_plat/validation/api/buffer/buffer.c   |  113 +-
              test/common_plat/validation/api/crypto/crypto.c   |    2 +-
              test/common_plat/validation/api/packet/packet.c   |   96 +-
              test/common_plat/validation/api/pktio/pktio.c     |   21 +-
              38 files changed, 1745 insertions(+), 1895 deletions(-)
              create mode 100644
             platform/linux-generic/include/odp_ring_internal.h

             --
             2.8.1





Reply via email to