This wiki page looks at how Linaro could be involved in enabling ARM servers.



Current Projects

Past Projects

Straw Plan

  • Phase 1. Current A9 SMP hardware
    • Add a server evaluation build to the platforms that Linaro support.
      • Depends on the server manifest from Ubuntu (or may be better to support that team directly; question of hardware)
      • Will need some support from the ARM porting program to fix ARM specific problems
    • Validation
      • Run benchmarks against server stack
      • Concentrate on underlying technologies, such as php, java
      • Might reveal gross performance issues, may use ARM porting program to fix
    • Kernel improvements
      • These could be done via community engagement in the kernel and / or graphics working groups
        • Engineers would work within the team, using same repositories etc, but not be driven by the team
        • Blueprints would not be Linaro blueprints
    • Investigate ARM Linux kernel specific server features (such as scheduler etc)
    • Question: Java SE, need commercial and / or strategic engagement
  • Phase 2. A15 based hardware
    • Implement architectural features
      • LPAE patches coming from ARM
      • Virtualization support in KVM
      • Question: is Qemu needed pre-hardware?
    • Expand benchmarks
      • Use results to fine tune ARM server performance, ARM Porting Program versus Server working group


  • Are there any long term kernel improvements that benefit ARM servers?
  • UEFI appears to be important in the server space, is this true for ARM?

Work Items

Descending priority order:


benchmark/improve: NAND stack

  • Achieving SSD performance levels requires parallel accesses to NAND chips. MTD/NAND interface needs to support striping/interleaving to achieve this. Can be done within NAND driver, but 1 bad block makes the whole stripe bad. Since UBI does bad block remapping, changes to UBI are also needed.
  • LogFS has some out of mainline patches for MTD:
    • Adapting bcache or flashcache to MTD/NAND is another possibility

Kernel NEON XOR Routines for Software RAID

  • develop: in-kernel NEON XOR routines for software RAID

Hugemem Support

  • See http://lwn.net/Articles/39283/. This was a standard feature in 32 bit x86 Red Hat Linux, but the patches were never merged.

    • Downside on x86 was a cache flush on kernel entry and exit, may not be an issue for ARM.
    • Suitable for 32 bit. May help LPAE as it tidies up the kernel memory layout
    • Transparent hugepages - ???

Test and Fix ARM Server

  • test/fix: containers
  • test/fix: Java - using SE 1.6 right now, no JIT
    • could talk to Oracle / Sun to opensource
    • short term could consider Dalvik
  • test/fix: PHP
    • could investigate hiphop

Server Software Stack

Basically, we need the LAMP stack. LXC (Linux containers) looks interesting as does OpenStack. Looks like LXC will be supported within OpenStack. Interestingly, UEFI appears to be important in this market. There's a pretty good description of the main software components in this blueprint - https://blueprints.launchpad.net/ubuntu/+spec/packageselection-arm-server-optimized-lamp-stack.


There are several problems here:

  • Picking a set of representative benchmarks,
  • Being able to share benchmarking information (actually, availability of hardware)
  • Benchmarking against x86, what systems make sense to benchmark against (Atom based SOHO Server?)

What might make sense initially is to concentrate on the core technologies plus obvious server stack libraries. So for underlying technologies:

  • Java
  • Javascript
  • Python
  • PHP

Initially, we don't need the full set of benchmarks, just enough to find obvious areas to improve performance.

Benchmark Candidates (pulled from http://ltp.sourceforge.net/tooltable.php)





a web server stress tool that can simulate multiple connections and users.



popular web server benchmark tool for measuring web server performance.



http regression testing and benchmarking utility.



loadtesting and benchmarking web servers.


Java VolanoMark

lets you determine the performance and connection limitations of your hardware, operating system, and Java platform when running the VOLANO chat server.



provides an extensible framework for which new tests can be easily added. It's designed to effectively carry out both qualitative and quantitative benchmarks in a clean, reproducible, and easy-to-use manner.




Want to test cpu not AHCI cards etc









HipHop for PHP

PHP workloads with benchmarks?

Wordpress has a benchmark

Samba benchmarks?


  • Cluster file systems (?) GFS / Gluster
  • Shark JIT on ARM
  • Python, Twisted (used by Launchpad), Ruby on rails (new kid on block but growing)
  • DNS - bind (Memcached a good proxy for DNS performance - essentially a look up)
  • HAProxy - user space - interesting

Note: Linaro is already making use of a number of the Phoronix testsuite (see Platform/Validation/AbrekTestsuites). Does it make sense to integrate server benchmarks into the validation suites? How are these results collated and shared?


Look at adding hooks into checkbox for benchmark testing on ARM Martin B, Dave Rusling (Linaro), Chuck, Leo (ARM) - willing to help with testing with hardware and appropriate information that makes things easy to run Scripts? Apt install on top of Linaro testing? Results to be hosted on UDS wiki for now Recommended kernel config + perf / oprofile - debug + large block handling

Collating Benchmark Results

Analysing Benchmark Results

We need to use profiling to determine hotspots (actually, cold spots) in performance. This implies use of Ftrace and profiling tools (perf events). Possible use of hardware (ETM) based tools such as ARM's DS5.








Set up a discussion with the Ubuntu server team (Robbie)

OfficeofCTO/Servers/May2011 (last modified 2012-01-24 12:46:33)