diff mbox

add openem x86 tests

Message ID 1382618848-3377-1-git-send-email-maxim.uvarov@linaro.org
State New
Headers show

Commit Message

Maxim Uvarov Oct. 24, 2013, 12:47 p.m. UTC
Signed-off-by: Maxim Uvarov <maxim.uvarov@linaro.org>
---
 ubuntu/openem.yaml       |   28 ++++++++++++++++++++++++++
 ubuntu/scripts/openem.sh |   50 ++++++++++++++++++++++++++++++++++++++++++++++
 2 files changed, 78 insertions(+)
 create mode 100644 ubuntu/openem.yaml
 create mode 100755 ubuntu/scripts/openem.sh

Comments

Amit Kucheria Oct. 24, 2013, 12:56 p.m. UTC | #1
Hi Maxim,

Pardon my ignorance but where are these tests being added to?

I just read very quickly about openem[1] and this might be something
we're interested in using as a test for our scheduler work. Can you
describe a bit more where openem originates and how you use it inside
LNG?

Regards,
Amit
[1] http://sourceforge.net/projects/eventmachine/files/Documents/EM_introduction_1_0.pdf/download

On Thu, Oct 24, 2013 at 6:17 PM, Maxim Uvarov <maxim.uvarov@linaro.org> wrote:
> Signed-off-by: Maxim Uvarov <maxim.uvarov@linaro.org>
> ---
>  ubuntu/openem.yaml       |   28 ++++++++++++++++++++++++++
>  ubuntu/scripts/openem.sh |   50 ++++++++++++++++++++++++++++++++++++++++++++++
>  2 files changed, 78 insertions(+)
>  create mode 100644 ubuntu/openem.yaml
>  create mode 100755 ubuntu/scripts/openem.sh
>
> diff --git a/ubuntu/openem.yaml b/ubuntu/openem.yaml
> new file mode 100644
> index 0000000..1a3939d
> --- /dev/null
> +++ b/ubuntu/openem.yaml
> @@ -0,0 +1,28 @@
> +metadata:
> +    name: thp
> +    format: "Lava-Test-Shell Test Definition 1.0"
> +    description: "Test for open event machine x86."
> +
> +install:
> +    git-repos:
> +        - git://git.linaro.org/qa/test-definitions.git
> +    deps:
> +        - python-twisted
> +        - git
> +        - make
> +        - unzip
> +        - gcc
> +        - build-essential
> +        - libc6-dev
> +        - gcc-multilib
> +run:
> +    steps:
> +        - "cd testcases/ubuntu/scripts"
> +        - "./openem.sh"
> +
> +
> +parse:
> +    pattern: "^(?P<test_case_id>[a-zA-Z0-9_-]+):\\s(?P<result>\\w+)"
> +    fixupdict:
> +        PASS: pass
> +        FAIL: fail
> diff --git a/ubuntu/scripts/openem.sh b/ubuntu/scripts/openem.sh
> new file mode 100755
> index 0000000..63bb028
> --- /dev/null
> +++ b/ubuntu/scripts/openem.sh
> @@ -0,0 +1,50 @@
> +#!/bin/bash -x
> +
> +mount -t tmpfs none /dev/shm
> +echo 400 > /proc/sys/vm/nr_hugepages
> +
> +rm -rf ./Build
> +mkdir ./Build
> +cd ./Build
> +
> +wget http://people.linaro.org/~maxim.uvarov/Intel_DPDK%20Code_1.5.0_8.zip
> +unzip Intel_DPDK\ Code_1.5.0_8.zip
> +mv DPDK-1.5.0 DPDK_1.5.0-8
> +
> +git clone git://git.linaro.org/lng/eventmachine-code.git eventmachine-code.git
> +
> +patch  -p0 < ./eventmachine-code.git/misc/linux-generic/patch/DPDK_1.5.0-8-linux-generic.patch
> +cd DPDK_1.5.0-8
> +
> +sed -i 's/CONFIG_RTE_MAX_MEMZONE=2560/CONFIG_RTE_MAX_MEMZONE=131072/' ./config/defconfig_*
> +sed -i 's/CONFIG_RTE_MEMPOOL_CACHE_MAX_SIZE=512/CONFIG_RTE_MEMPOOL_CACHE_MAX_SIZE=2048/' ./config/defconfig_*
> +sed -i 's/CONFIG_RTE_MBUF_SCATTER_GATHER=y/CONFIG_RTE_MBUF_SCATTER_GATHER=n/' ./config/defconfig_*
> +sed -i 's/CONFIG_RTE_MBUF_REFCNT_ATOMIC=y/CONFIG_RTE_MBUF_REFCNT_ATOMIC=n/' ./config/defconfig_*
> +sed -i 's/CONFIG_RTE_PKTMBUF_HEADROOM=128/CONFIG_RTE_PKTMBUF_HEADROOM=192/' ./config/defconfig_*
> +make install T=generic_32-default-linuxapp-gcc
> +
> +export RTE_SDK=`pwd`
> +export RTE_TARGET=generic_32-default-linuxapp-gcc
> +#export RTE_TARGET=generic_64-default-linuxapp-gcc
> +
> +mkdir /mnt/huge
> +umount /mnt/huge
> +mount -t hugetlbfs nodev /mnt/huge
> +
> +#EM
> +cd ../eventmachine-code.git/event_test/example/linux-generic
> +make real_clean && make em_clean
> +make
> +
> +#run some tests:
> +./build/hello -c 0xfe -n 4 -- -p  | head -n 500    # (Run 'hello' on  7 cores using EM process-per-core mode(-p))
> +./build/hello -c 0xfcfc -n 4 -- -t | head -n 500       # (Run 'hello' on 12 cores using EM thread-per-core  mode(-t))
> +./build/perf -c 0xffff -n 4 -- -p  | head -n 500      # (Run 'perf' on 16 cores using EM process-per-core mode(-p))
> +./build/perf -c 0xfffe -n 4 -- -t  | hean -n 500      # (Run 'perf' on 15 cores using EM thread-per-core  mode(-t))
> +./build/event_group -c 0x0c0c -n 4 -- -p | head -n 500 # (Run 'event_group' on 4 cores using EM process-per-core mode(-p))
> +./build/event_group -c 0x00f0 -n 4 -- -t | head -n 500 # (Run 'event_group' on 4 cores using EM thread-per-core  mode(-t))
> +./build/error -c 0x3 -n 4 -- -p |head -n 500         # (Run 'error' on 2 cores using EM process-per-core mode(-p))
> +./build/error -c 0x2 -n 4 -- -t |head -n 500         # (Run 'error' on 1 core  using EM thread-per-core  mode(-t))
> +
> +echo "OPENEM TEST END!!!"
> +
> --
> 1.7.9.5
>
>
> _______________________________________________
> linaro-kernel mailing list
> linaro-kernel@lists.linaro.org
> http://lists.linaro.org/mailman/listinfo/linaro-kernel
Maxim Uvarov Oct. 24, 2013, 1:12 p.m. UTC | #2
On 10/24/2013 04:56 PM, Amit Kucheria wrote:
> Hi Maxim,
>
> Pardon my ignorance but where are these tests being added to?
>
> I just read very quickly about openem[1] and this might be something
> we're interested in using as a test for our scheduler work. Can you
> describe a bit more where openem originates and how you use it inside
> LNG?
>
> Regards,
> Amit
Hi Amit,

1. this test proposed for git://git.linaro.org/qa/test-definitions.git


2. In general commit has bash script which downloads openem, compiles it as
suggested in  README and run some basic changes.
Output of test can be found here:
http://validation.linaro.org/scheduler/job/80939/log_file

Next work will be to remove dpdk dependence and do some arm optimizations.

Thank you,
Maxim.

> [1] http://sourceforge.net/projects/eventmachine/files/Documents/EM_introduction_1_0.pdf/download
>
> On Thu, Oct 24, 2013 at 6:17 PM, Maxim Uvarov <maxim.uvarov@linaro.org> wrote:
>> Signed-off-by: Maxim Uvarov <maxim.uvarov@linaro.org>
>> ---
>>   ubuntu/openem.yaml       |   28 ++++++++++++++++++++++++++
>>   ubuntu/scripts/openem.sh |   50 ++++++++++++++++++++++++++++++++++++++++++++++
>>   2 files changed, 78 insertions(+)
>>   create mode 100644 ubuntu/openem.yaml
>>   create mode 100755 ubuntu/scripts/openem.sh
>>
>> diff --git a/ubuntu/openem.yaml b/ubuntu/openem.yaml
>> new file mode 100644
>> index 0000000..1a3939d
>> --- /dev/null
>> +++ b/ubuntu/openem.yaml
>> @@ -0,0 +1,28 @@
>> +metadata:
>> +    name: thp
>> +    format: "Lava-Test-Shell Test Definition 1.0"
>> +    description: "Test for open event machine x86."
>> +
>> +install:
>> +    git-repos:
>> +        - git://git.linaro.org/qa/test-definitions.git
>> +    deps:
>> +        - python-twisted
>> +        - git
>> +        - make
>> +        - unzip
>> +        - gcc
>> +        - build-essential
>> +        - libc6-dev
>> +        - gcc-multilib
>> +run:
>> +    steps:
>> +        - "cd testcases/ubuntu/scripts"
>> +        - "./openem.sh"
>> +
>> +
>> +parse:
>> +    pattern: "^(?P<test_case_id>[a-zA-Z0-9_-]+):\\s(?P<result>\\w+)"
>> +    fixupdict:
>> +        PASS: pass
>> +        FAIL: fail
>> diff --git a/ubuntu/scripts/openem.sh b/ubuntu/scripts/openem.sh
>> new file mode 100755
>> index 0000000..63bb028
>> --- /dev/null
>> +++ b/ubuntu/scripts/openem.sh
>> @@ -0,0 +1,50 @@
>> +#!/bin/bash -x
>> +
>> +mount -t tmpfs none /dev/shm
>> +echo 400 > /proc/sys/vm/nr_hugepages
>> +
>> +rm -rf ./Build
>> +mkdir ./Build
>> +cd ./Build
>> +
>> +wget http://people.linaro.org/~maxim.uvarov/Intel_DPDK%20Code_1.5.0_8.zip
>> +unzip Intel_DPDK\ Code_1.5.0_8.zip
>> +mv DPDK-1.5.0 DPDK_1.5.0-8
>> +
>> +git clone git://git.linaro.org/lng/eventmachine-code.git eventmachine-code.git
>> +
>> +patch  -p0 < ./eventmachine-code.git/misc/linux-generic/patch/DPDK_1.5.0-8-linux-generic.patch
>> +cd DPDK_1.5.0-8
>> +
>> +sed -i 's/CONFIG_RTE_MAX_MEMZONE=2560/CONFIG_RTE_MAX_MEMZONE=131072/' ./config/defconfig_*
>> +sed -i 's/CONFIG_RTE_MEMPOOL_CACHE_MAX_SIZE=512/CONFIG_RTE_MEMPOOL_CACHE_MAX_SIZE=2048/' ./config/defconfig_*
>> +sed -i 's/CONFIG_RTE_MBUF_SCATTER_GATHER=y/CONFIG_RTE_MBUF_SCATTER_GATHER=n/' ./config/defconfig_*
>> +sed -i 's/CONFIG_RTE_MBUF_REFCNT_ATOMIC=y/CONFIG_RTE_MBUF_REFCNT_ATOMIC=n/' ./config/defconfig_*
>> +sed -i 's/CONFIG_RTE_PKTMBUF_HEADROOM=128/CONFIG_RTE_PKTMBUF_HEADROOM=192/' ./config/defconfig_*
>> +make install T=generic_32-default-linuxapp-gcc
>> +
>> +export RTE_SDK=`pwd`
>> +export RTE_TARGET=generic_32-default-linuxapp-gcc
>> +#export RTE_TARGET=generic_64-default-linuxapp-gcc
>> +
>> +mkdir /mnt/huge
>> +umount /mnt/huge
>> +mount -t hugetlbfs nodev /mnt/huge
>> +
>> +#EM
>> +cd ../eventmachine-code.git/event_test/example/linux-generic
>> +make real_clean && make em_clean
>> +make
>> +
>> +#run some tests:
>> +./build/hello -c 0xfe -n 4 -- -p  | head -n 500    # (Run 'hello' on  7 cores using EM process-per-core mode(-p))
>> +./build/hello -c 0xfcfc -n 4 -- -t | head -n 500       # (Run 'hello' on 12 cores using EM thread-per-core  mode(-t))
>> +./build/perf -c 0xffff -n 4 -- -p  | head -n 500      # (Run 'perf' on 16 cores using EM process-per-core mode(-p))
>> +./build/perf -c 0xfffe -n 4 -- -t  | hean -n 500      # (Run 'perf' on 15 cores using EM thread-per-core  mode(-t))
>> +./build/event_group -c 0x0c0c -n 4 -- -p | head -n 500 # (Run 'event_group' on 4 cores using EM process-per-core mode(-p))
>> +./build/event_group -c 0x00f0 -n 4 -- -t | head -n 500 # (Run 'event_group' on 4 cores using EM thread-per-core  mode(-t))
>> +./build/error -c 0x3 -n 4 -- -p |head -n 500         # (Run 'error' on 2 cores using EM process-per-core mode(-p))
>> +./build/error -c 0x2 -n 4 -- -t |head -n 500         # (Run 'error' on 1 core  using EM thread-per-core  mode(-t))
>> +
>> +echo "OPENEM TEST END!!!"
>> +
>> --
>> 1.7.9.5
>>
>>
>> _______________________________________________
>> linaro-kernel mailing list
>> linaro-kernel@lists.linaro.org
>> http://lists.linaro.org/mailman/listinfo/linaro-kernel
Ola Liljedahl Oct. 24, 2013, 1:46 p.m. UTC | #3
Amit,

OpenEM is a software implementation of the NSN Event Machine (EM). There are also a couple of HW-specific implementations of EM from the respective HW (SoC) vendors. EM is a fundamental part of OpenDataPlane (ODP) which you will hear more about at Linaro Connect next week. LNG is using OpenEM as a basis for the ODP reference implementation. Originally OpenEM was designed for running on x86 and utilising Intel DPDK for device (network interface) access etc. Linaro and NSN are liberating OpenEM from DPDK dependencies and the ODP reference implementation will run on vanilla Linux without needing DPDK (I think it already does).

Networking and dataplane applications will probably have different power management strategies compared to servers and client devices. A SoC may be running a mix of dataplane and other (e.g. control plane) applications and need different power management strategies (for different cores) on the same SoC. I have had some initial discussions with Charles Garcia-Tobin and Morten Rasmussen about this. Maybe something we can discuss at Connect.

-- Ola

Ola Liljedahl, Networking System Architect, ARM
Telephone: +46 706 866 373    Skype: ola.liljedahl


> -----Original Message-----
> From: Amit Kucheria [mailto:amit.kucheria@linaro.org]
> Sent: 24 October 2013 14:56
> To: Maxim Uvarov; Vincent Guittot
> Cc: linaro-networking; Lists linaro-kernel; Patch Tracking
> Subject: [LNG] Re: [PATCH] add openem x86 tests
>
> Hi Maxim,
>
> Pardon my ignorance but where are these tests being added to?
>
> I just read very quickly about openem[1] and this might be something
> we're interested in using as a test for our scheduler work. Can you
> describe a bit more where openem originates and how you use it inside
> LNG?
>
> Regards,
> Amit
> [1]
> http://sourceforge.net/projects/eventmachine/files/Documents/EM_introductio
> n_1_0.pdf/download
>
> On Thu, Oct 24, 2013 at 6:17 PM, Maxim Uvarov <maxim.uvarov@linaro.org>
> wrote:
> > Signed-off-by: Maxim Uvarov <maxim.uvarov@linaro.org>
> > ---
> >  ubuntu/openem.yaml       |   28 ++++++++++++++++++++++++++
> >  ubuntu/scripts/openem.sh |   50
> ++++++++++++++++++++++++++++++++++++++++++++++
> >  2 files changed, 78 insertions(+)
> >  create mode 100644 ubuntu/openem.yaml
> >  create mode 100755 ubuntu/scripts/openem.sh
> >
> > diff --git a/ubuntu/openem.yaml b/ubuntu/openem.yaml
> > new file mode 100644
> > index 0000000..1a3939d
> > --- /dev/null
> > +++ b/ubuntu/openem.yaml
> > @@ -0,0 +1,28 @@
> > +metadata:
> > +    name: thp
> > +    format: "Lava-Test-Shell Test Definition 1.0"
> > +    description: "Test for open event machine x86."
> > +
> > +install:
> > +    git-repos:
> > +        - git://git.linaro.org/qa/test-definitions.git
> > +    deps:
> > +        - python-twisted
> > +        - git
> > +        - make
> > +        - unzip
> > +        - gcc
> > +        - build-essential
> > +        - libc6-dev
> > +        - gcc-multilib
> > +run:
> > +    steps:
> > +        - "cd testcases/ubuntu/scripts"
> > +        - "./openem.sh"
> > +
> > +
> > +parse:
> > +    pattern: "^(?P<test_case_id>[a-zA-Z0-9_-]+):\\s(?P<result>\\w+)"
> > +    fixupdict:
> > +        PASS: pass
> > +        FAIL: fail
> > diff --git a/ubuntu/scripts/openem.sh b/ubuntu/scripts/openem.sh
> > new file mode 100755
> > index 0000000..63bb028
> > --- /dev/null
> > +++ b/ubuntu/scripts/openem.sh
> > @@ -0,0 +1,50 @@
> > +#!/bin/bash -x
> > +
> > +mount -t tmpfs none /dev/shm
> > +echo 400 > /proc/sys/vm/nr_hugepages
> > +
> > +rm -rf ./Build
> > +mkdir ./Build
> > +cd ./Build
> > +
> > +wget
> http://people.linaro.org/~maxim.uvarov/Intel_DPDK%20Code_1.5.0_8.zip
> > +unzip Intel_DPDK\ Code_1.5.0_8.zip
> > +mv DPDK-1.5.0 DPDK_1.5.0-8
> > +
> > +git clone git://git.linaro.org/lng/eventmachine-code.git eventmachine-
> code.git
> > +
> > +patch  -p0 < ./eventmachine-code.git/misc/linux-
> generic/patch/DPDK_1.5.0-8-linux-generic.patch
> > +cd DPDK_1.5.0-8
> > +
> > +sed -i 's/CONFIG_RTE_MAX_MEMZONE=2560/CONFIG_RTE_MAX_MEMZONE=131072/'
> ./config/defconfig_*
> > +sed -i
> 's/CONFIG_RTE_MEMPOOL_CACHE_MAX_SIZE=512/CONFIG_RTE_MEMPOOL_CACHE_MAX_SIZE=
> 2048/' ./config/defconfig_*
> > +sed -i
> 's/CONFIG_RTE_MBUF_SCATTER_GATHER=y/CONFIG_RTE_MBUF_SCATTER_GATHER=n/'
> ./config/defconfig_*
> > +sed -i
> 's/CONFIG_RTE_MBUF_REFCNT_ATOMIC=y/CONFIG_RTE_MBUF_REFCNT_ATOMIC=n/'
> ./config/defconfig_*
> > +sed -i
> 's/CONFIG_RTE_PKTMBUF_HEADROOM=128/CONFIG_RTE_PKTMBUF_HEADROOM=192/'
> ./config/defconfig_*
> > +make install T=generic_32-default-linuxapp-gcc
> > +
> > +export RTE_SDK=`pwd`
> > +export RTE_TARGET=generic_32-default-linuxapp-gcc
> > +#export RTE_TARGET=generic_64-default-linuxapp-gcc
> > +
> > +mkdir /mnt/huge
> > +umount /mnt/huge
> > +mount -t hugetlbfs nodev /mnt/huge
> > +
> > +#EM
> > +cd ../eventmachine-code.git/event_test/example/linux-generic
> > +make real_clean && make em_clean
> > +make
> > +
> > +#run some tests:
> > +./build/hello -c 0xfe -n 4 -- -p  | head -n 500    # (Run 'hello' on  7
> cores using EM process-per-core mode(-p))
> > +./build/hello -c 0xfcfc -n 4 -- -t | head -n 500       # (Run 'hello' on
> 12 cores using EM thread-per-core  mode(-t))
> > +./build/perf -c 0xffff -n 4 -- -p  | head -n 500      # (Run 'perf' on
> 16 cores using EM process-per-core mode(-p))
> > +./build/perf -c 0xfffe -n 4 -- -t  | hean -n 500      # (Run 'perf' on
> 15 cores using EM thread-per-core  mode(-t))
> > +./build/event_group -c 0x0c0c -n 4 -- -p | head -n 500 # (Run
> 'event_group' on 4 cores using EM process-per-core mode(-p))
> > +./build/event_group -c 0x00f0 -n 4 -- -t | head -n 500 # (Run
> 'event_group' on 4 cores using EM thread-per-core  mode(-t))
> > +./build/error -c 0x3 -n 4 -- -p |head -n 500         # (Run 'error' on 2
> cores using EM process-per-core mode(-p))
> > +./build/error -c 0x2 -n 4 -- -t |head -n 500         # (Run 'error' on 1
> core  using EM thread-per-core  mode(-t))
> > +
> > +echo "OPENEM TEST END!!!"
> > +
> > --
> > 1.7.9.5
> >
> >
> > _______________________________________________
> > linaro-kernel mailing list
> > linaro-kernel@lists.linaro.org
> > http://lists.linaro.org/mailman/listinfo/linaro-kernel
>
> --
> You received this message because you are subscribed to the Google Groups
> "Linaro Networking" group.
> To unsubscribe from this group and stop receiving emails from it, send an
> email to linaro-networking+unsubscribe@linaro.org.
> To post to this group, send email to linaro-networking@linaro.org.


-- IMPORTANT NOTICE: The contents of this email and any attachments are confidential and may also be privileged. If you are not the intended recipient, please notify the sender immediately and do not disclose the contents to any other person, use it for any purpose, or store or copy the information in any medium.  Thank you.

ARM Limited, Registered office 110 Fulbourn Road, Cambridge CB1 9NJ, Registered in England & Wales, Company No:  2557590
ARM Holdings plc, Registered office 110 Fulbourn Road, Cambridge CB1 9NJ, Registered in England & Wales, Company No:  2548782
Amit Kucheria Oct. 25, 2013, 5:16 a.m. UTC | #4
Thanks for the explanation, Ola. I'll catch up with you during connect to
see if this test suite or a subset of it might make sense to add to our
list of benchmarks.

My very high-level understanding is that openem has its own job scheduler
to route packets to the best cpu. And what it measures is progress in
processing packets I.e. performance. Please correct me if I'm wrong.

See you next week.

/amit
On 24 Oct 2013 15:46, "Ola Liljedahl" <Ola.Liljedahl@arm.com> wrote:

> Amit,
>
> OpenEM is a software implementation of the NSN Event Machine (EM). There
> are also a couple of HW-specific implementations of EM from the respective
> HW (SoC) vendors. EM is a fundamental part of OpenDataPlane (ODP) which you
> will hear more about at Linaro Connect next week. LNG is using OpenEM as a
> basis for the ODP reference implementation. Originally OpenEM was designed
> for running on x86 and utilising Intel DPDK for device (network interface)
> access etc. Linaro and NSN are liberating OpenEM from DPDK dependencies and
> the ODP reference implementation will run on vanilla Linux without needing
> DPDK (I think it already does).
>
> Networking and dataplane applications will probably have different power
> management strategies compared to servers and client devices. A SoC may be
> running a mix of dataplane and other (e.g. control plane) applications and
> need different power management strategies (for different cores) on the
> same SoC. I have had some initial discussions with Charles Garcia-Tobin and
> Morten Rasmussen about this. Maybe something we can discuss at Connect.
>
> -- Ola
>
> Ola Liljedahl, Networking System Architect, ARM
> Telephone: +46 706 866 373    Skype: ola.liljedahl
>
>
> > -----Original Message-----
> > From: Amit Kucheria [mailto:amit.kucheria@linaro.org]
> > Sent: 24 October 2013 14:56
> > To: Maxim Uvarov; Vincent Guittot
> > Cc: linaro-networking; Lists linaro-kernel; Patch Tracking
> > Subject: [LNG] Re: [PATCH] add openem x86 tests
> >
> > Hi Maxim,
> >
> > Pardon my ignorance but where are these tests being added to?
> >
> > I just read very quickly about openem[1] and this might be something
> > we're interested in using as a test for our scheduler work. Can you
> > describe a bit more where openem originates and how you use it inside
> > LNG?
> >
> > Regards,
> > Amit
> > [1]
> >
> http://sourceforge.net/projects/eventmachine/files/Documents/EM_introductio
> > n_1_0.pdf/download
> >
> > On Thu, Oct 24, 2013 at 6:17 PM, Maxim Uvarov <maxim.uvarov@linaro.org>
> > wrote:
> > > Signed-off-by: Maxim Uvarov <maxim.uvarov@linaro.org>
> > > ---
> > >  ubuntu/openem.yaml       |   28 ++++++++++++++++++++++++++
> > >  ubuntu/scripts/openem.sh |   50
> > ++++++++++++++++++++++++++++++++++++++++++++++
> > >  2 files changed, 78 insertions(+)
> > >  create mode 100644 ubuntu/openem.yaml
> > >  create mode 100755 ubuntu/scripts/openem.sh
> > >
> > > diff --git a/ubuntu/openem.yaml b/ubuntu/openem.yaml
> > > new file mode 100644
> > > index 0000000..1a3939d
> > > --- /dev/null
> > > +++ b/ubuntu/openem.yaml
> > > @@ -0,0 +1,28 @@
> > > +metadata:
> > > +    name: thp
> > > +    format: "Lava-Test-Shell Test Definition 1.0"
> > > +    description: "Test for open event machine x86."
> > > +
> > > +install:
> > > +    git-repos:
> > > +        - git://git.linaro.org/qa/test-definitions.git
> > > +    deps:
> > > +        - python-twisted
> > > +        - git
> > > +        - make
> > > +        - unzip
> > > +        - gcc
> > > +        - build-essential
> > > +        - libc6-dev
> > > +        - gcc-multilib
> > > +run:
> > > +    steps:
> > > +        - "cd testcases/ubuntu/scripts"
> > > +        - "./openem.sh"
> > > +
> > > +
> > > +parse:
> > > +    pattern: "^(?P<test_case_id>[a-zA-Z0-9_-]+):\\s(?P<result>\\w+)"
> > > +    fixupdict:
> > > +        PASS: pass
> > > +        FAIL: fail
> > > diff --git a/ubuntu/scripts/openem.sh b/ubuntu/scripts/openem.sh
> > > new file mode 100755
> > > index 0000000..63bb028
> > > --- /dev/null
> > > +++ b/ubuntu/scripts/openem.sh
> > > @@ -0,0 +1,50 @@
> > > +#!/bin/bash -x
> > > +
> > > +mount -t tmpfs none /dev/shm
> > > +echo 400 > /proc/sys/vm/nr_hugepages
> > > +
> > > +rm -rf ./Build
> > > +mkdir ./Build
> > > +cd ./Build
> > > +
> > > +wget
> > http://people.linaro.org/~maxim.uvarov/Intel_DPDK%20Code_1.5.0_8.zip
> > > +unzip Intel_DPDK\ Code_1.5.0_8.zip
> > > +mv DPDK-1.5.0 DPDK_1.5.0-8
> > > +
> > > +git clone git://git.linaro.org/lng/eventmachine-code.giteventmachine-
> > code.git
> > > +
> > > +patch  -p0 < ./eventmachine-code.git/misc/linux-
> > generic/patch/DPDK_1.5.0-8-linux-generic.patch
> > > +cd DPDK_1.5.0-8
> > > +
> > > +sed -i 's/CONFIG_RTE_MAX_MEMZONE=2560/CONFIG_RTE_MAX_MEMZONE=131072/'
> > ./config/defconfig_*
> > > +sed -i
> >
> 's/CONFIG_RTE_MEMPOOL_CACHE_MAX_SIZE=512/CONFIG_RTE_MEMPOOL_CACHE_MAX_SIZE=
> > 2048/' ./config/defconfig_*
> > > +sed -i
> > 's/CONFIG_RTE_MBUF_SCATTER_GATHER=y/CONFIG_RTE_MBUF_SCATTER_GATHER=n/'
> > ./config/defconfig_*
> > > +sed -i
> > 's/CONFIG_RTE_MBUF_REFCNT_ATOMIC=y/CONFIG_RTE_MBUF_REFCNT_ATOMIC=n/'
> > ./config/defconfig_*
> > > +sed -i
> > 's/CONFIG_RTE_PKTMBUF_HEADROOM=128/CONFIG_RTE_PKTMBUF_HEADROOM=192/'
> > ./config/defconfig_*
> > > +make install T=generic_32-default-linuxapp-gcc
> > > +
> > > +export RTE_SDK=`pwd`
> > > +export RTE_TARGET=generic_32-default-linuxapp-gcc
> > > +#export RTE_TARGET=generic_64-default-linuxapp-gcc
> > > +
> > > +mkdir /mnt/huge
> > > +umount /mnt/huge
> > > +mount -t hugetlbfs nodev /mnt/huge
> > > +
> > > +#EM
> > > +cd ../eventmachine-code.git/event_test/example/linux-generic
> > > +make real_clean && make em_clean
> > > +make
> > > +
> > > +#run some tests:
> > > +./build/hello -c 0xfe -n 4 -- -p  | head -n 500    # (Run 'hello' on
>  7
> > cores using EM process-per-core mode(-p))
> > > +./build/hello -c 0xfcfc -n 4 -- -t | head -n 500       # (Run 'hello'
> on
> > 12 cores using EM thread-per-core  mode(-t))
> > > +./build/perf -c 0xffff -n 4 -- -p  | head -n 500      # (Run 'perf' on
> > 16 cores using EM process-per-core mode(-p))
> > > +./build/perf -c 0xfffe -n 4 -- -t  | hean -n 500      # (Run 'perf' on
> > 15 cores using EM thread-per-core  mode(-t))
> > > +./build/event_group -c 0x0c0c -n 4 -- -p | head -n 500 # (Run
> > 'event_group' on 4 cores using EM process-per-core mode(-p))
> > > +./build/event_group -c 0x00f0 -n 4 -- -t | head -n 500 # (Run
> > 'event_group' on 4 cores using EM thread-per-core  mode(-t))
> > > +./build/error -c 0x3 -n 4 -- -p |head -n 500         # (Run 'error'
> on 2
> > cores using EM process-per-core mode(-p))
> > > +./build/error -c 0x2 -n 4 -- -t |head -n 500         # (Run 'error'
> on 1
> > core  using EM thread-per-core  mode(-t))
> > > +
> > > +echo "OPENEM TEST END!!!"
> > > +
> > > --
> > > 1.7.9.5
> > >
> > >
> > > _______________________________________________
> > > linaro-kernel mailing list
> > > linaro-kernel@lists.linaro.org
> > > http://lists.linaro.org/mailman/listinfo/linaro-kernel
> >
> > --
> > You received this message because you are subscribed to the Google Groups
> > "Linaro Networking" group.
> > To unsubscribe from this group and stop receiving emails from it, send an
> > email to linaro-networking+unsubscribe@linaro.org.
> > To post to this group, send email to linaro-networking@linaro.org.
>
>
> -- IMPORTANT NOTICE: The contents of this email and any attachments are
> confidential and may also be privileged. If you are not the intended
> recipient, please notify the sender immediately and do not disclose the
> contents to any other person, use it for any purpose, or store or copy the
> information in any medium.  Thank you.
>
> ARM Limited, Registered office 110 Fulbourn Road, Cambridge CB1 9NJ,
> Registered in England & Wales, Company No:  2557590
> ARM Holdings plc, Registered office 110 Fulbourn Road, Cambridge CB1 9NJ,
> Registered in England & Wales, Company No:  2548782
>
>
Ola Liljedahl Oct. 25, 2013, 2:12 p.m. UTC | #5
From: Amit Kucheria [mailto:amit.kucheria@linaro.org]
Sent: 25 October 2013 07:16
To: Ola Liljedahl
Cc: linaro-networking; Vincent Guittot; Maxim Uvarov; Lists linaro-kernel; Patch Tracking
Subject: RE: [LNG] Re: [PATCH] add openem x86 tests


Thanks for the explanation, Ola. I'll catch up with you during connect to see if this test suite or a subset of it might make sense to add to our list of benchmarks.

My very high-level understanding is that openem has its own job scheduler to route packets to the best cpu. And what it measures is progress in processing packets I.e. performance. Please correct me if I'm wrong.

[Ola] Raw performance is not the only metric. Appropriate QoS and latency for different traffic classes is important. Efficient utilisation of the cores allocated to networking (not only packet processing but also other types of dataplane processing). Etc.

See you next week.

/amit
On 24 Oct 2013 15:46, "Ola Liljedahl" <Ola.Liljedahl@arm.com<mailto:Ola.Liljedahl@arm.com>> wrote:
Amit,

OpenEM is a software implementation of the NSN Event Machine (EM). There are also a couple of HW-specific implementations of EM from the respective HW (SoC) vendors. EM is a fundamental part of OpenDataPlane (ODP) which you will hear more about at Linaro Connect next week. LNG is using OpenEM as a basis for the ODP reference implementation. Originally OpenEM was designed for running on x86 and utilising Intel DPDK for device (network interface) access etc. Linaro and NSN are liberating OpenEM from DPDK dependencies and the ODP reference implementation will run on vanilla Linux without needing DPDK (I think it already does).

Networking and dataplane applications will probably have different power management strategies compared to servers and client devices. A SoC may be running a mix of dataplane and other (e.g. control plane) applications and need different power management strategies (for different cores) on the same SoC. I have had some initial discussions with Charles Garcia-Tobin and Morten Rasmussen about this. Maybe something we can discuss at Connect.

-- Ola

Ola Liljedahl, Networking System Architect, ARM
Telephone: +46 706 866 373<tel:%2B46%20706%20866%20373>    Skype: ola.liljedahl


> -----Original Message-----
> From: Amit Kucheria [mailto:amit.kucheria@linaro.org<mailto:amit.kucheria@linaro.org>]
> Sent: 24 October 2013 14:56
> To: Maxim Uvarov; Vincent Guittot
> Cc: linaro-networking; Lists linaro-kernel; Patch Tracking
> Subject: [LNG] Re: [PATCH] add openem x86 tests
>
> Hi Maxim,
>
> Pardon my ignorance but where are these tests being added to?
>
> I just read very quickly about openem[1] and this might be something
> we're interested in using as a test for our scheduler work. Can you
> describe a bit more where openem originates and how you use it inside
> LNG?
>
> Regards,
> Amit
> [1]
> http://sourceforge.net/projects/eventmachine/files/Documents/EM_introductio
> n_1_0.pdf/download
>
> On Thu, Oct 24, 2013 at 6:17 PM, Maxim Uvarov <maxim.uvarov@linaro.org<mailto:maxim.uvarov@linaro.org>>
> wrote:
> > Signed-off-by: Maxim Uvarov <maxim.uvarov@linaro.org<mailto:maxim.uvarov@linaro.org>>
> > ---
> >  ubuntu/openem.yaml       |   28 ++++++++++++++++++++++++++
> >  ubuntu/scripts/openem.sh |   50
> ++++++++++++++++++++++++++++++++++++++++++++++
> >  2 files changed, 78 insertions(+)
> >  create mode 100644 ubuntu/openem.yaml
> >  create mode 100755 ubuntu/scripts/openem.sh
> >
> > diff --git a/ubuntu/openem.yaml b/ubuntu/openem.yaml
> > new file mode 100644
> > index 0000000..1a3939d
> > --- /dev/null
> > +++ b/ubuntu/openem.yaml
> > @@ -0,0 +1,28 @@
> > +metadata:
> > +    name: thp
> > +    format: "Lava-Test-Shell Test Definition 1.0"
> > +    description: "Test for open event machine x86."
> > +
> > +install:
> > +    git-repos:
> > +        - git://git.linaro.org/qa/test-definitions.git<http://git.linaro.org/qa/test-definitions.git>
> > +    deps:
> > +        - python-twisted
> > +        - git
> > +        - make
> > +        - unzip
> > +        - gcc
> > +        - build-essential
> > +        - libc6-dev
> > +        - gcc-multilib
> > +run:
> > +    steps:
> > +        - "cd testcases/ubuntu/scripts"
> > +        - "./openem.sh"
> > +
> > +
> > +parse:
> > +    pattern: "^(?P<test_case_id>[a-zA-Z0-9_-]+):\\s(?P<result>\\w<file:///\\w>+)"
> > +    fixupdict:
> > +        PASS: pass
> > +        FAIL: fail
> > diff --git a/ubuntu/scripts/openem.sh b/ubuntu/scripts/openem.sh
> > new file mode 100755
> > index 0000000..63bb028
> > --- /dev/null
> > +++ b/ubuntu/scripts/openem.sh
> > @@ -0,0 +1,50 @@
> > +#!/bin/bash -x
> > +
> > +mount -t tmpfs none /dev/shm
> > +echo 400 > /proc/sys/vm/nr_hugepages
> > +
> > +rm -rf ./Build
> > +mkdir ./Build
> > +cd ./Build
> > +
> > +wget
> http://people.linaro.org/~maxim.uvarov/Intel_DPDK%20Code_1.5.0_8.zip
> > +unzip Intel_DPDK\ Code_1.5.0_8.zip
> > +mv DPDK-1.5.0 DPDK_1.5.0-8
> > +
> > +git clone git://git.linaro.org/lng/eventmachine-code.git<http://git.linaro.org/lng/eventmachine-code.git> eventmachine-
> code.git
> > +
> > +patch  -p0 < ./eventmachine-code.git/misc/linux-
> generic/patch/DPDK_1.5.0-8-linux-generic.patch
> > +cd DPDK_1.5.0-8
> > +
> > +sed -i 's/CONFIG_RTE_MAX_MEMZONE=2560/CONFIG_RTE_MAX_MEMZONE=131072/'
> ./config/defconfig_*
> > +sed -i
> 's/CONFIG_RTE_MEMPOOL_CACHE_MAX_SIZE=512/CONFIG_RTE_MEMPOOL_CACHE_MAX_SIZE=
> 2048/' ./config/defconfig_*
> > +sed -i
> 's/CONFIG_RTE_MBUF_SCATTER_GATHER=y/CONFIG_RTE_MBUF_SCATTER_GATHER=n/'
> ./config/defconfig_*
> > +sed -i
> 's/CONFIG_RTE_MBUF_REFCNT_ATOMIC=y/CONFIG_RTE_MBUF_REFCNT_ATOMIC=n/'
> ./config/defconfig_*
> > +sed -i
> 's/CONFIG_RTE_PKTMBUF_HEADROOM=128/CONFIG_RTE_PKTMBUF_HEADROOM=192/'
> ./config/defconfig_*
> > +make install T=generic_32-default-linuxapp-gcc
> > +
> > +export RTE_SDK=`pwd`
> > +export RTE_TARGET=generic_32-default-linuxapp-gcc
> > +#export RTE_TARGET=generic_64-default-linuxapp-gcc
> > +
> > +mkdir /mnt/huge
> > +umount /mnt/huge
> > +mount -t hugetlbfs nodev /mnt/huge
> > +
> > +#EM
> > +cd ../eventmachine-code.git/event_test/example/linux-generic
> > +make real_clean && make em_clean
> > +make
> > +
> > +#run some tests:
> > +./build/hello -c 0xfe -n 4 -- -p  | head -n 500    # (Run 'hello' on  7
> cores using EM process-per-core mode(-p))
> > +./build/hello -c 0xfcfc -n 4 -- -t | head -n 500       # (Run 'hello' on
> 12 cores using EM thread-per-core  mode(-t))
> > +./build/perf -c 0xffff -n 4 -- -p  | head -n 500      # (Run 'perf' on
> 16 cores using EM process-per-core mode(-p))
> > +./build/perf -c 0xfffe -n 4 -- -t  | hean -n 500      # (Run 'perf' on
> 15 cores using EM thread-per-core  mode(-t))
> > +./build/event_group -c 0x0c0c -n 4 -- -p | head -n 500 # (Run
> 'event_group' on 4 cores using EM process-per-core mode(-p))
> > +./build/event_group -c 0x00f0 -n 4 -- -t | head -n 500 # (Run
> 'event_group' on 4 cores using EM thread-per-core  mode(-t))
> > +./build/error -c 0x3 -n 4 -- -p |head -n 500         # (Run 'error' on 2
> cores using EM process-per-core mode(-p))
> > +./build/error -c 0x2 -n 4 -- -t |head -n 500         # (Run 'error' on 1
> core  using EM thread-per-core  mode(-t))
> > +
> > +echo "OPENEM TEST END!!!"
> > +
> > --
> > 1.7.9.5
> >
> >
> > _______________________________________________
> > linaro-kernel mailing list
> > linaro-kernel@lists.linaro.org<mailto:linaro-kernel@lists.linaro.org>
> > http://lists.linaro.org/mailman/listinfo/linaro-kernel
>
> --
> You received this message because you are subscribed to the Google Groups
> "Linaro Networking" group.
> To unsubscribe from this group and stop receiving emails from it, send an
> email to linaro-networking+unsubscribe@linaro.org<mailto:linaro-networking%2Bunsubscribe@linaro.org>.
> To post to this group, send email to linaro-networking@linaro.org<mailto:linaro-networking@linaro.org>.


-- IMPORTANT NOTICE: The contents of this email and any attachments are confidential and may also be privileged. If you are not the intended recipient, please notify the sender immediately and do not disclose the contents to any other person, use it for any purpose, or store or copy the information in any medium.  Thank you.

ARM Limited, Registered office 110 Fulbourn Road, Cambridge CB1 9NJ, Registered in England & Wales, Company No:  2557590
ARM Holdings plc, Registered office 110 Fulbourn Road, Cambridge CB1 9NJ, Registered in England & Wales, Company No:  2548782
--
You received this message because you are subscribed to the Google Groups "Linaro Networking" group.
To unsubscribe from this group and stop receiving emails from it, send an email to linaro-networking+unsubscribe@linaro.org<mailto:linaro-networking+unsubscribe@linaro.org>.
To post to this group, send email to linaro-networking@linaro.org<mailto:linaro-networking@linaro.org>.

-- IMPORTANT NOTICE: The contents of this email and any attachments are confidential and may also be privileged. If you are not the intended recipient, please notify the sender immediately and do not disclose the contents to any other person, use it for any purpose, or store or copy the information in any medium. Thank you.

ARM Limited, Registered office 110 Fulbourn Road, Cambridge CB1 9NJ, Registered in England & Wales, Company No: 2557590
ARM Holdings plc, Registered office 110 Fulbourn Road, Cambridge CB1 9NJ, Registered in England & Wales, Company No: 2548782
diff mbox

Patch

diff --git a/ubuntu/openem.yaml b/ubuntu/openem.yaml
new file mode 100644
index 0000000..1a3939d
--- /dev/null
+++ b/ubuntu/openem.yaml
@@ -0,0 +1,28 @@ 
+metadata:
+    name: thp 
+    format: "Lava-Test-Shell Test Definition 1.0"
+    description: "Test for open event machine x86."
+
+install:
+    git-repos:
+        - git://git.linaro.org/qa/test-definitions.git
+    deps:
+        - python-twisted
+        - git
+        - make
+        - unzip
+        - gcc
+        - build-essential
+        - libc6-dev
+        - gcc-multilib
+run:
+    steps:
+        - "cd testcases/ubuntu/scripts"
+        - "./openem.sh"
+
+
+parse:
+    pattern: "^(?P<test_case_id>[a-zA-Z0-9_-]+):\\s(?P<result>\\w+)"
+    fixupdict:
+        PASS: pass
+        FAIL: fail
diff --git a/ubuntu/scripts/openem.sh b/ubuntu/scripts/openem.sh
new file mode 100755
index 0000000..63bb028
--- /dev/null
+++ b/ubuntu/scripts/openem.sh
@@ -0,0 +1,50 @@ 
+#!/bin/bash -x
+
+mount -t tmpfs none /dev/shm
+echo 400 > /proc/sys/vm/nr_hugepages
+
+rm -rf ./Build
+mkdir ./Build
+cd ./Build
+
+wget http://people.linaro.org/~maxim.uvarov/Intel_DPDK%20Code_1.5.0_8.zip
+unzip Intel_DPDK\ Code_1.5.0_8.zip
+mv DPDK-1.5.0 DPDK_1.5.0-8
+
+git clone git://git.linaro.org/lng/eventmachine-code.git eventmachine-code.git
+
+patch  -p0 < ./eventmachine-code.git/misc/linux-generic/patch/DPDK_1.5.0-8-linux-generic.patch
+cd DPDK_1.5.0-8
+
+sed -i 's/CONFIG_RTE_MAX_MEMZONE=2560/CONFIG_RTE_MAX_MEMZONE=131072/' ./config/defconfig_*
+sed -i 's/CONFIG_RTE_MEMPOOL_CACHE_MAX_SIZE=512/CONFIG_RTE_MEMPOOL_CACHE_MAX_SIZE=2048/' ./config/defconfig_*
+sed -i 's/CONFIG_RTE_MBUF_SCATTER_GATHER=y/CONFIG_RTE_MBUF_SCATTER_GATHER=n/' ./config/defconfig_*
+sed -i 's/CONFIG_RTE_MBUF_REFCNT_ATOMIC=y/CONFIG_RTE_MBUF_REFCNT_ATOMIC=n/' ./config/defconfig_*
+sed -i 's/CONFIG_RTE_PKTMBUF_HEADROOM=128/CONFIG_RTE_PKTMBUF_HEADROOM=192/' ./config/defconfig_*
+make install T=generic_32-default-linuxapp-gcc
+
+export RTE_SDK=`pwd`
+export RTE_TARGET=generic_32-default-linuxapp-gcc
+#export RTE_TARGET=generic_64-default-linuxapp-gcc
+
+mkdir /mnt/huge
+umount /mnt/huge
+mount -t hugetlbfs nodev /mnt/huge
+
+#EM
+cd ../eventmachine-code.git/event_test/example/linux-generic
+make real_clean && make em_clean
+make
+
+#run some tests:
+./build/hello -c 0xfe -n 4 -- -p  | head -n 500    # (Run 'hello' on  7 cores using EM process-per-core mode(-p))
+./build/hello -c 0xfcfc -n 4 -- -t | head -n 500       # (Run 'hello' on 12 cores using EM thread-per-core  mode(-t))
+./build/perf -c 0xffff -n 4 -- -p  | head -n 500      # (Run 'perf' on 16 cores using EM process-per-core mode(-p))
+./build/perf -c 0xfffe -n 4 -- -t  | hean -n 500      # (Run 'perf' on 15 cores using EM thread-per-core  mode(-t))
+./build/event_group -c 0x0c0c -n 4 -- -p | head -n 500 # (Run 'event_group' on 4 cores using EM process-per-core mode(-p))
+./build/event_group -c 0x00f0 -n 4 -- -t | head -n 500 # (Run 'event_group' on 4 cores using EM thread-per-core  mode(-t))
+./build/error -c 0x3 -n 4 -- -p |head -n 500         # (Run 'error' on 2 cores using EM process-per-core mode(-p))
+./build/error -c 0x2 -n 4 -- -t |head -n 500         # (Run 'error' on 1 core  using EM thread-per-core  mode(-t))
+
+echo "OPENEM TEST END!!!"
+