First impressions of the Raspberry Pi 2

I got my hands on one today, and after arriving home and re-purposing a Class 10 MicroSD card, here are a few short notes on it.

“Pi 2” seems less of an improvement than Pi2, so I’m going to use that moniker to refer to it henceforth.

  • It now displays four Raspberry Pi logos upon boot – a nice if whimsical touch.
  • There is indeed an overclocking option – to 1GHz. Haven’t tried that yet, since I’m pressed for time tonight.
  • To my surprise, the default browser didn’t work – it loaded pages absurdly slowly, as if there was some DNS issue. I’m assuming these are teething troubles of some sort, since Chromium worked just fine the first time, and was able to load most pages I threw at it speedily and without hassles.
  • Mathematica seems to run much faster, both in terms of startup time and a couple of test plots I did, but it used only one CPU core – three cores were left idling.
  • I’m sad to see this still running Debian instead of Ubuntu. With that, I’d be able to have a nicer set of packages and do direct comparisons.

I’m guessing there is still a lot of optimisation to be done in Raspbian (likely most binaries aren’t taking full advantage of the hardware at this point), but in the meantime my ODROID-U2 is still faster (and will certainly remain so).

After dinner I managed to run a Clojure web server on both, and results are telling. What I did was set up this project of mine atop JDK 1.81, and hit them with wrk in turn over Wi-Fi:

# Pi 2

$ wrk -c 100 -d 60 -t 50 --latency http://quad-damage.lan:8080
Running 1m test @ http://quad-damage.lan:8080
  50 threads and 100 connections
  Thread Stats   Avg      Stdev     Max   +/- Stdev
    Latency   184.05ms  175.81ms   1.63s    92.53%
    Req/Sec    11.93      3.25    22.00     74.40%
  Latency Distribution
     50%  136.61ms
     75%  177.25ms
     90%  276.00ms
     99%    1.35s 
  37055 requests in 1.00m, 149.55MB read
Requests/sec:    616.97
Transfer/sec:      2.49MB


$ wrk -c 100 -d 60 -t 50 --latency http://odroid-server.lan:8080
Running 1m test @ http://odroid-server.lan:8080
  50 threads and 100 connections
  Thread Stats   Avg      Stdev     Max   +/- Stdev
    Latency   190.28ms  334.34ms   3.01s    89.93%
    Req/Sec    14.58      6.09    28.00     66.45%
  Latency Distribution
     50%   92.56ms
     75%  112.97ms
     90%  528.78ms
     99%    2.29s 
  44803 requests in 1.00m, 180.81MB read
  Socket errors: connect 0, read 0, write 0, timeout 11
Requests/sec:    745.91
Transfer/sec:      3.01MB

Besides the gap seen above, you should take two things into consideration:

  1. The ODROID was also running a desktop environment with Chromium and a few terminals (whereas I rebooted the Pi2 beforehand).
  2. This test maxed out all four cores on the Pi2, but the ODROID never went past 60% CPU usage (and even then it did so only on one core, with the others hovering between 35-45%).

So there was a network bottleneck involved, but the Pi2 was still swamped. I expect it will be able to, say, run NetBeans (like I do on the ODROID), but it won’t do it as nimbly.

Nevertheless, the new board does provide more than adequate bang for the buck, and I look forward to obtaining a normal (non-Snappy Core) Ubuntu for it – as well as upgrading my cluster in the fullness of time.

  1. Going back to this, the Pi 2 ships a JDK that is a couple of revs above what I had on the ODROID, but the release notes only mentioned security fixes, so I’m assuming they’re equivalent. ↩︎