Canonical Voices

bmichaelsen

“The problem is all inside your head” she said to me
“The answer is easy if you take it logically”
— Paul Simon, 50 ways to leave your lover

So recently I tweaked around with these newfangled C++11 initializer lists and created an EasyHack to use them to initialize property sequences in a readable way. This caused a short exchange on the LibreOffice mailing list, which I assumed had its part in motivating Stephans interesting post “On filling a vector”. For all the points being made (also in the quick follow up on IRC), I wondered how much the theoretical “can use a move constructor” discussed etc. really meant when the C++ is translated to e.g. GENERIC, then GIMPLE, then amd64 assembler, then to the internal RISC instructions of the CPU – with multiple levels of caching in addition.

So I quickly wrote the following (thanks so much for C++11 having the nice std::chrono now).

data.hxx:

#include <vector>
struct Data {
    Data();
    Data(int a);
    int m_a;
};
void DoSomething(std::vector<Data>&);

data.cxx:

#include "data.hxx"
// noop in different compilation unit to prevent optimizing out what we want to measure
void DoSomething(std::vector<Data>&) {};
Data::Data() : m_a(4711) {};
Data::Data(int a) : m_a(a+4711) {};

main.cxx:

#include "data.hxx"
#include <iostream>
#include <vector>
#include <chrono>
#include <functional>

void A1(long count) {
    while(--count) {
        std::vector<Data> vec { Data(), Data(), Data() };
        DoSomething(vec);
    }
}

void A2(long count) {
    while(--count) {
        std::vector<Data> vec { {}, {}, {} };
        DoSomething(vec);
    }
}

void A3(long count) {
    while(--count) {
        std::vector<Data> vec { 0, 0, 0 };
        DoSomething(vec);
    }
}

void B1(long count) {
    while(--count) {
        std::vector<Data> vec;
        vec.reserve(3);
        vec.push_back(Data());
        vec.push_back(Data());
        vec.push_back(Data());
        DoSomething(vec);
    }
}

void B2(long count) {
    while(--count) {
        std::vector<Data> vec;
        vec.reserve(3);
        vec.push_back({});
        vec.push_back({});
        vec.push_back({});
        DoSomething(vec);
    }
}

void B3(long count) {
    while(--count) {
        std::vector<Data> vec;
        vec.reserve(3);
        vec.push_back(0);
        vec.push_back(0);
        vec.push_back(0);
        DoSomething(vec);
    }
}

void C1(long count) {
    while(--count) {
        std::vector<Data> vec;
        vec.reserve(3);
        vec.emplace_back(Data());
        vec.emplace_back(Data());
        vec.emplace_back(Data());
        DoSomething(vec);
    }
}

void C3(long count) {
    while(--count) {
        std::vector<Data> vec;
        vec.reserve(3);
        vec.emplace_back(0);
        vec.emplace_back(0);
        vec.emplace_back(0);
        DoSomething(vec);
    }
}

double benchmark(const char* name, std::function<void (long)> testfunc, const long count) {
    const auto start = std::chrono::system_clock::now();
    testfunc(count);
    const auto end = std::chrono::system_clock::now();
    const std::chrono::duration<double> delta = end-start;
    std::cout << count << " " << name << " iterations took " << delta.count() << " seconds." << std::endl;
    return delta.count();
}

int main(int, char**) {
    long count = 10000000;
    while(benchmark("A1", &A1, count) < 60l)
        count <<= 1;
    std::cout << "Going with " << count << " iterations." << std::endl;
    benchmark("A1", &A1, count);
    benchmark("A2", &A2, count);
    benchmark("A3", &A3, count);
    benchmark("B1", &B1, count);
    benchmark("B2", &B2, count);
    benchmark("B3", &B3, count);
    benchmark("C1", &C1, count);
    benchmark("C3", &C3, count);
    return 0;
}

Makefile:

CFLAGS?=-O2
main: main.o data.o
    g++ -o $@ $^

%.o: %.cxx data.hxx
    g++ $(CFLAGS) -std=c++11 -o $@ -c $<

Note the object here is small and trivial to copy as one would expect from objects passed around as values (as expensive to copy objects mostly can be passed around with a std::shared_ptr). So what did this measure? Here are the results:

Time for 1280000000 iterations on a Intel i5-4200U@1.6GHz (-march=core-avx2) compiled with gcc 4.8.3 without inline constructors:

implementation / CFLAGS -Os -O2 -O3 -O3 -march=…
A1 89.1 s 79.0 s 78.9 s 78.9 s
A2 89.1 s 78.1 s 78.0 s 80.5 s
A3 90.0 s 78.9 s 78.8 s 79.3 s
B1 103.6 s 97.8 s 79.0 s 78.0 s
B2 99.4 s 95.6 s 78.5 s 78.0 s
B3 107.4 s 90.9 s 79.7 s 79.9 s
C1 99.4 s 94.4 s 78.0 s 77.9 s
C3 98.9 s 100.7 s 78.1 s 81.7 s

creating a three element vector without inlined constructors
And, for comparison, the results, if one allows the constructors to be inlined.
Time for 1280000000 iterations on a Intel i5-4200U@1.6GHz (-march=core-avx2) compiled with gcc 4.8.3 with inline constructors:

implementation / CFLAGS -Os -O2 -O3 -O3 -march=…
A1 85.6 s 74.7 s 74.6 s 74.6 s
A2 85.3 s 74.6 s 73.7 s 74.5 s
A3 91.6 s 73.8 s 74.4 s 74.5 s
B1 93.4 s 90.2 s 72.8 s 72.0 s
B2 93.7 s 88.3 s 72.0 s 73.7 s
B3 97.6 s 88.3 s 72.8 s 72.0 s
C1 93.4 s 88.3 s 72.0 s 73.7 s
C3 96.2 s 88.3 s 71.9 s 73.7 s

creating a three element vector with inlined constructors

Some observations on these measurements:

  • -march=... is at best neutral: The measured times do not change much in general, they only even slightly improve performance in five out of 16 cases, and the two cases with the most significant change in performance (over 3%) are actually hurting the performance. So for the rest of this post, -march=... will be ignored. Sorry gentooers. ;)
  • There is no silver bullet with regard to the different implementations: A1, A2 and A3 are the faster implementations when not inlining constructors and using -Os or -O2 (the quickest A* is ~10% faster than the quickest B*/C*). However when inlining constructors and using -O3, the same implementations are the slowest (by 2.4%).
  • Most common release builds are still done with -O2 these days. For those, using initializer lists (A1/A2/A3) seem too have a significant edge over the alternatives, whether constructors are inlined or not. This is in contrast to the conclusions made from “constructor counting”, which assumed these to be slow because of additional calls needed.
  • The numbers printed in bold are either the quickest implementation in a build scenario or one that is within 1.5% of the quickest implementation. A1 and A2 are sharing the title here by being in that group five times each.
  • With constructors inlined, everything in the loop except DoSomething() could be inline. It seems to me that the compiler could — at least in theory — figure out that it is asked the same thing in all cases. Namely, reserve space for three ints on the heap, fill them each with 4711 and make the ::std::vector<int> data structure on the stack reflect that, then hand that to the DoSomething() function that you know nothing about. If the compiler would figure that out, it would take the same time for all implementations. This doesnt happen either on -O2 (differ by ~18% from quickest to slowest) nor on -O3 (differ by ~3.6%).

One common mantra in applications development is “trust the compiler to optimize”. The above observations show a few cracks in the foundations of that, esp. if you take into account that this is all on the same version of the same compiler running on the same platform and hardware with the same STL implementation. For huge objects with expensive constructors, the constructor counting approach might still be valid. Then again, those are rarely statically initialized as a bigger bunch into a vector. For the more common scenario of smaller objects with cheap constructors, my tentative conclusion so far would be to go with A1/A2/A3 — not so much because they are quickest in the most common build scenarios on my platform, but rather because the readability of them is a value on its own while the performance picture is muddy at best.

And hey, if you want to run the tests above on other platforms or compilers, I would be interested in results!

Note: I did these runs for each scenario only once, thus no standard deviation is given. In general, they seemed to be rather stable, but this being wallclock measurements, one or the other might be outliers. caveat emptor.


Read more
UbuntuTouch

[原]Ubuntu 手机开发培训准备

在这篇文章中,我们将介绍学生如何做培训准备前的准备工作。提前准备并安装好自己的环境是做好一个培训非常重要的步骤。


                 

1)安装好自己的SDK


如果想在自己的电脑上安装Ubntu系统

学生可以按照文章“Ubuntu SDK 安装”安装好自己的Ubuntu系统及SDK。让后根据文章“创建第一个Ubuntu for phone应用”来检验自己安装的环境是否正确。这种安装通常需要在电脑上安装多系统功能,或虚拟机(模拟器在虚拟机的效果可能并不好)。

如果想做一个专为Ubuntu手机开发而做的Live USB

请参照文章“如何制作Ubuntu SDK Live USB盘”来专门制作一个可以启动的Live USB盘。这个盘可以直接插入到电脑中的USB口中,并启动Ubuntu系统。这个USB盘中已经安装好整个可以供开发的SDK,不需要安装任何额外的软件即可开发。

a) 在BIOS中启动硬件虚拟化功能,这样会使得模拟器的运行速度加快
b) 在BIOS中设置优选顺序以使得USB可以优先启动,或在启动的时候按下F12功能键,并选择由USB来启动Ubuntu

在启动Ubuntu系统后,Ubuntu SDK已经完全安装好了。开发者可以直接进行开发了。建议参阅文章“创建第一个Ubuntu for phone应用”来检验自己安装的环境是否正确。


在开发过程中如果使用手机进行安装时,如果需要密码解锁手机的话,这个密码是“0000”。

2)Ubuntu手机介绍


对不熟悉Ubuntu手机的开发者来说,可以先观看视频“如何使用Ubuntu手机”来了解Ubuntu手机。如果你想对Ubuntu SDK有更深的认识,请观看视频“如何使用Ubuntu SDK (视频)”。开发者也可以观看Ubuntu手机的官方宣传视频来更进一步了解。

你可以在地址“Ubuntu手机介绍”下载有关Ubuntu手机介绍的幻灯片,并在地址观看相应的视频


3)QML应用开发


Flickr应用开发

阅读文章“使用Ubuntu SDK开发Flickr应用教程”,并观看视频“Ubuntu手机应用QML开发 (视频)”。幻灯片“Ubuntu应用开发”。

教程的源码在: bzr branch lp:~liu-xiao-guo/debiantrial/flickr7
我们可以在Shell中输入以上的指令来下载源码。

DeveloperNews RSS阅读器

首先我们可以阅读文章“从零开始创建一个Ubuntu应用--一个小的RSS阅读器”及文章“如何在Ubuntu中使用条件布局”。视频在“在Ubuntu平台上开发Qt Quick QML应用 (视频)

教程的源码在:bzr branch lp:~liu-xiao-guo/debiantrial/developernews4

我们可以在Shell中输入以上的指令来下载源码。


4)Scope 开发


大家可以先观看视频“Ubuntu Scope简介及开发流程”来了解Ubuntu OS上的Scope开发流程。


幻灯片“Scope技术开发”。幻灯片讲演的视频在地址观看。

教程的源码在: bzr branch lp:~liu-xiao-guo/debiantrial/dianpianclient8
我们可以在Shell中输入以上的指令来下载源码。

更多关于Scope开发的例程可以在链接找到。

5)更多的培训材料


我们也有更多的英文的培训材料。开发者可以在地址下载。


如果有任何问题,请在该文章处评论。我会尽力回答你们的问题。


作者:UbuntuTouch 发表于2015/1/4 15:36:54 原文链接
阅读:1211 评论:6 查看评论

Read more
UbuntuTouch

在这篇文章中,我们来介绍如何判断一个QML应用被推到后台或前台。我们知道,在Ubuntu手机平台中,它是一个单应用的操作系统。当一个应用被推到后台后,应用就被挂起,不能运行。我们有时需要这个标志来判断我们的应用什么时候是在前台,什么时候是在后台。


我们用Ubuntu SDK创建一个简单的QML应用:


import QtQuick 2.0
import Ubuntu.Components 1.1

/*!
    \brief MainView with a Label and Button elements.
*/

MainView {
    id: main
    // objectName for functional testing purposes (autopilot-qt5)
    objectName: "mainView"

    // Note! applicationName needs to match the "name" field of the click manifest
    applicationName: "com.ubuntu.developer.liu-xiao-guo.foregrounddetect"

    /*
     This property enables the application to change orientation
     when the device is rotated. The default is false.
    */
    //automaticOrientation: true

    // Removes the old toolbar and enables new features of the new header.
    useDeprecatedToolbar: false

    width: units.gu(100)
    height: units.gu(75)


    Page {
        title: i18n.tr("ForegroundDetect")

        Connections {
             target: Qt.application
             onActiveChanged: {
                 console.log("Qt.application.active: " + Qt.application.active);
             }
         }
    }
}

在这里,我们使用Qt.application这个变量的"active"属性来判断一个应用是否被推到后台或前台。我们运行应用结果如下:




当我们在手机上把应用推到后台时,就会显示false;当我们把应用推到前台时,就会显示true。

整个应用的源码在:bzr branch lp:~liu-xiao-guo/debiantrial/foregrounddetect


作者:UbuntuTouch 发表于2015/1/5 10:56:25 原文链接
阅读:466 评论:0 查看评论

Read more
UbuntuTouch

在这个视频里,我们从“0”开始来开发一个mini的RSS阅读器。通过这个练习,开发者可以对QML的编程有一个基本的了解,并了解在Ubuntu平台上的一些开发的流程。应用的图片如下:


  



作者:UbuntuTouch 发表于2015/1/13 15:08:31 原文链接
阅读:382 评论:0 查看评论

Read more
UbuntuTouch

[原]如何制作Ubuntu SDK Live USB盘

对于一些想开发Ubuntu手机应用或Scope的开发者来说,不想重新买一个电脑安装Ubuntu操作系统或在自己的硬盘上重新安装一个Ubuntu系统,那么可以考虑制作一个Ubuntu系统的Live USB盘。这个USB包括如下的部分:


  • Ubuntu Kylin 14.10操作系统
  • Ubuntu SDK (包括已经安装好的SDK,模拟器及编译环境)

使用这个Live USB盘,开发者就不用安装任何的东西,直接插入电脑的USB口中。在电脑启动的过程中,选择我们制作好的USB启动盘进行启动(在电脑启动的过程中,按下“F12”键)。在启动的过程中选择“Try Ubuntu Kylin without installing




虽然这是一个Ubuntu OS的启动盘,但是它可以保存我们在开发过程中所创建的项目(存于Home目录中)及一些设置(比如wifi设置密码等)。


当我们选择USB时,我们最好是选择USB 3.0并把USB盘放入到电脑USB 3.0的口中。一般来说,电脑上的USB 3.0口是用蓝色标示的。建议使用质量较好,速度较快一点的USB这样可以使得系统的启动和运行更快更流畅。目前我们使用SanDisk CZ80来做测试,效果还是不错的。USB需要有16G的存储。


为了使得我们的模拟器能够更加流畅及模拟器不会出现黑色的屏幕,我们需要在电脑的BIOS里启动硬件虚拟化功能。开发者需要到自己的电脑的BIOS里的设置启动VT-X/AMD-V。开发者可以参考文章“Ubuntu SDK 安装”来检查自己的电脑是否支持virtualization。




如果开发者想要在自己的电脑上安装Ubuntu系统并在上面开发的话,可以参考文章“Ubuntu SDK 安装”来一步一步地安装Ubuntu SDK。



1)如何在Ubuntu系统下制作Live USB盘


启动Ubuntu操作系统,打开浏览器并在如下的地址下载最新的image:


https://mega.co.nz/#F!S8QSRZyI!2HBWgXk4kmc_2bcCcpBR3Q


下载的文件包含:

  • kylin-live-20150133.iso (md5sum 13cd61270bf98eb462dc0497df8eee33) 
  • casper-rw-20150113.tar.bz2  (md5sum 8c69f94a03481275bf66aa883b69ae1b)
  • post-usb-creator-window.sh(在Windows下制作需要这个)
  • README.md (简单的说明文件)

我们把下载的文件存于到我们想要的一个目录中,比如在自己的Home下的“usb”目录中。


在Dash中输入“usb”,并启动“Startup Disk Creator/启动盘创建器”






我们按照如下的方法来制作我们的USB启动盘。





在设置“储存在额外保留空间”时,它的值应该为非零的值。等USB盘已经制作好以后,你将会看到如下的画面:







重新挂载USB盘,因为在前一步会自动卸载USB盘,或者在Ubuntu中的文件浏览器中点击USB所在的device。这样就可以完成重新挂载USB:





然后按下面运行自带的脚本,参数为 USB 盘挂载的路径。


解压已经下载的casper-rw-2015xxxx.tar.bz2文件


等文件都被解压完后,进入解压文件所在的目录,并在shell中执行如下的指令:


liuxg@liuxg:~/usb$ ./post-usb-creator-linux.sh /media/liuxg/BD52-7153/


这里“/liuxg/BD52-7153”为USB盘挂载的路径。根据自己USB盘所在的路径替换。


2)如何在Windows 平台下制作启动盘


http://www.ubuntu.com/download/desktop/create-a-usb-stick-on-windows

下载制作工具,与 Linux 平台的工具相似。




单我们在选择“Persistent file”时,它的大小应该是非零的一个值。在我们填入“Step 2”时,我们不应该把拷贝好的字符串拷到该输入框中,否则在“Step 3”中的输入框就会是灰色的。我们应该点击“Browse”按钮,并按照如下的方式进行输入image的路径:




在这之后把 casper-rw 文件拷贝到USB的主目录下即可。


:如果只想使用英文版的Ubuntu系统就不需要进行下面的步骤。如果想要支持中文版,请把 post-usb-creator-window.sh 也拷贝到 USB盘的根目录下。从USB 盘启动Ubuntu系统后, 在dash中启动Terminal,






并在Terminal中执行如下的命令:


$ cd /cdrom/

$ sudo ./post-usb-creator-window.sh


再次重新启动后,会进入中文版的Ubuntu系统。


3)测试已经制作好的USB启动盘


我们可以把我们的Live USB盘插入电脑,我们可以通文章“创建第一个Ubuntu for phone应用”来检验我们是否有一个完好的Ubuntu SDK。


在我们启动模拟器时,如果需要输入密码,请使用默认的密码“0000”。如果开发者需要自己修改这个密码,请到Ubuntu SDK模拟器中的“系统设置”中去修改。


对于应用开发者来说,在Qt Creator中的热键组合“Ctrl + Space”键有它独特的用处。可是,在Ubuntu系统中,“Ctrl + Space”被用来转换中英文输入法。建议开发者参考文章“怎么在Ubuntu OS上面安装搜狗输入法及对Qt Creator的支持”来重新定义键的组合。


已知问题 (known issues)

如果你在使用的过程中,发现有如下的乱码的情况(极少情况下出现),请重新启动你的机器来纠正这个问题。




在个别电脑上不能启动的问题


我们发现在联想 E455 出现不能启动的问题,目前怀疑是和 AMD 显卡驱动有关,问题仍在调查中,如果遇到些问题,请在系统上安装14.04 LTS版本并安装相应的ubuntu-sdk包来尝试学习ubuntu phone的开发知识,其中的基本概念都是一样。


注:如果想长时间致力于ubuntu phone的开发建议在电脑上安装一个ubuntu系统,最好是utopic (14.10),而不是在Live环境下进行学习,一是以防数据的丢失,二是在使用性能上有更快速的体验。



作者:UbuntuTouch 发表于2015/1/22 15:35:55 原文链接
阅读:506 评论:0 查看评论

Read more
UbuntuTouch

在这篇文章中,我们将介绍如何使用Ubuntu系统提供的online account API来实现我们的微博。通过这篇文章,开发者可以使用同样的方法来实现对其它Web Service的访问,比如淘宝,优酷等网站的访问。我们实现的新浪微博的Scope的截图如下。本篇文章的重点是介绍online account API的使用,所以我不会像以前的那些教程一样从最基本的Scope开发介绍。更多关于online account的介绍在网址找到。


   


1)创建一个最基本的weibo Scope

我们通过使用Ubuntu SDK来创建一个最基本的Scope。在这里我们使用如下的Scope template:


     


    

按照如上的步骤,我们可以创建一个我们自己的一个最基本的weibo Scope,虽然里面显示的还是天气。


2)为online account添加必要的文件


我们可以参考文章,也可以参照视频,来对online account API有一个更深的了解。为了方便我们的设计,我们在项目的根目录下创建如下的"click"目录:



我们同时也把在根目录下的“manifest.json.in”及“weibo.apparmor”移到“click”目录下,当然,我们也需要对根目录下的“CMakeLists.txt”做必要的修改。修改后的CMakeLists.txt文件如下:

project(weibo CXX)
cmake_minimum_required(VERSION 2.8.10)
set(CMAKE_MODULE_PATH "${CMAKE_SOURCE_DIR}/cmake" "${CMAKE_MODULE_PATH}")

# We require g++ 4.9, to avoid ABI breakage with earlier version.
set(cxx_version_required 4.9)
if("${CMAKE_CXX_COMPILER_ID}" STREQUAL "GNU")
    if (NOT CMAKE_CXX_COMPILER_VERSION MATCHES "^${cxx_version_required}")
        message(FATAL_ERROR "g++ version must be ${cxx_version_required}!")
    endif()
endif()

# Set strict and naggy C++ compiler flags, and enable C++11
add_definitions(
  -fno-permissive
  -std=c++11
  -pedantic
  -Wall
  -Wextra
  -fPIC
  -DQT_NO_KEYWORDS
)

include(GNUInstallDirs)
find_package(PkgConfig)
find_package(Intltool)

# We depend on Boost for string trimming
find_package(
  Boost
  REQUIRED
)

# Search for our dependencies
pkg_check_modules(
  SCOPE
  libunity-scopes>=0.6.0
  net-cpp>=1.1.0
  REQUIRED
)

find_package(Qt5Core REQUIRED)
include_directories(${Qt5Core_INCLUDE_DIRS})

# Add our dependencies to the include paths
include_directories(
  "${CMAKE_SOURCE_DIR}/include"
  ${Boost_INCLUDE_DIRS}
  ${SCOPE_INCLUDE_DIRS}
)

# Do not remove this line, its required for the correct functionality of the Ubuntu-SDK
set(UBUNTU_MANIFEST_PATH "click/manifest.json.in" CACHE INTERNAL "Tells QtCreator location and name of the manifest file")
set(UBUNTU_PROJECT_TYPE "Scope" CACHE INTERNAL "Tells QtCreator this is a Scope project")

# Important project paths
set(CMAKE_INSTALL_PREFIX /)
set(SCOPE_INSTALL_DIR "/weibo")
set(GETTEXT_PACKAGE "weibo")
set(PACKAGE_NAME "weibo.ubuntu")
set(SCOPE_NAME "${PACKAGE_NAME}_weibo")

set(SCOPE_INSTALL_NAME "${PACKAGE_NAME}_weibo")
set(SCOPE_ACCOUNTS_NAME "${PACKAGE_NAME}_accounts")
set(SYMBOL_MAP "${CMAKE_SOURCE_DIR}/data/${PACKAGE_NAME}.map")

add_definitions(-DGETTEXT_PACKAGE="${GETTEXT_PACKAGE}")
add_definitions(-DSCOPE_NAME="${SCOPE_NAME}")
add_definitions(-DSCOPE_INSTALL_NAME="${SCOPE_INSTALL_NAME}")
add_definitions(-DSCOPE_ACCOUNTS_NAME="${SCOPE_ACCOUNTS_NAME}")
add_definitions(-DPACKAGE_NAME="${PACKAGE_NAME}")

# If we need to refer to the scope's name or package in code, these definitions will help

#This command figures out the target architecture and puts it into the manifest file
execute_process(
  COMMAND dpkg-architecture -qDEB_HOST_ARCH
  OUTPUT_VARIABLE CLICK_ARCH
  OUTPUT_STRIP_TRAILING_WHITESPACE
)

#configure_file(manifest.json.in ${CMAKE_CURRENT_BINARY_DIR}/manifest.json)

# Install the click manifest
#install(FILES ${CMAKE_CURRENT_BINARY_DIR}/manifest.json DESTINATION "/")
#install(FILES "weibo.apparmor" DESTINATION "/")

# Make these files show up in QtCreator
file(GLOB_RECURSE
  _PO_FILES
  "po/*.po" 
)
add_custom_target(hidden_files
  ALL
  SOURCES
#    manifest.json.in
#    weibo.apparmor
    data/${SCOPE_NAME}.ini.in
    po/POTFILES.in
    po/${GETTEXT_PACKAGE}.pot
    ${_PO_FILES}
)

add_subdirectory(click)

# Add our main directories
add_subdirectory(src)
add_subdirectory(data)
add_subdirectory(po)

# Set up the tests
enable_testing()
add_subdirectory(tests)
add_custom_target(
  check
  ${CMAKE_CTEST_COMMAND} --force-new-ctest-process --output-on-failure
)

这里主要的修改是影藏显示“manifest.json.in”及“weibo.apparmor”文件的显示,应为这两个文件已经移到“click”目录中了。同时也注释掉如下的语句,应为这项工作在“click”目录中的“CMakeLists.txt”中已经做了。

#configure_file(manifest.json.in ${CMAKE_CURRENT_BINARY_DIR}/manifest.json)

# Install the click manifest
#install(FILES ${CMAKE_CURRENT_BINARY_DIR}/manifest.json DESTINATION "/")
#install(FILES "weibo.apparmor" DESTINATION "/")

另外,我们为了能够正确地显示项目,我们也对如下的句子做了修改:

set(UBUNTU_MANIFEST_PATH "click/manifest.json.in" CACHE INTERNAL "Tells QtCreator location and name of the manifest file")

这里我们加上了“click”路径。同时我们也加入了如下的定义:

set(SCOPE_INSTALL_NAME "${PACKAGE_NAME}_weibo")
set(SCOPE_ACCOUNTS_NAME "${PACKAGE_NAME}_accounts")
set(SYMBOL_MAP "${CMAKE_SOURCE_DIR}/data/${PACKAGE_NAME}.map")

add_definitions(-DGETTEXT_PACKAGE="${GETTEXT_PACKAGE}")
add_definitions(-DSCOPE_NAME="${SCOPE_NAME}")
add_definitions(-DSCOPE_INSTALL_NAME="${SCOPE_INSTALL_NAME}")
add_definitions(-DSCOPE_ACCOUNTS_NAME="${SCOPE_ACCOUNTS_NAME}")
add_definitions(-DPACKAGE_NAME="${PACKAGE_NAME}")

这样这些变量及定义可以在项目的其它文件中被正确地引用了。

下面,我们来看看“click”目录下的文件:

apparmor.json


{
    "template": "ubuntu-scope-network",
    "policy_groups": [
        "accounts"
    ],
    "policy_version": 1.2
}


注意这里在“policy_groups”里我们多加入了一个称作为“accounts”的policy。这个是必须的,否则不可以正常工作。


manifest.json.in

这个文件的显示如下:

{
    "description": "This is a tutorial for weibo scope",
    "framework": "ubuntu-sdk-14.10",
    "architecture": "@CLICK_ARCH@",
    "hooks": {
        "weibo": {
            "scope": "weibo",
            "apparmor": "apparmor.json",
            "account-application": "weibo.application",
            "account-service": "weibo.service"
        },
        "accounts": {
            "account-provider": "weibo.provider",
            "account-qml-plugin": "qml-plugin"
        }
    },
    "maintainer": "XiaoGuo, Liu <xiaoguo.liu@canonical.com>",
    "name": "@PACKAGE_NAME@",
    "title": "weibo scope",
    "version": "0.1"
}

这个文件和我们template所产生的文件略有不同。这里的“hooks”中加入了account的一些东西。在每个用户登陆时都会生产相应的配置文件。

weibo.application.in


<?xml version="1.0" encoding="UTF-8"?>
<application>
  <description>Weibo scope</description>
  <desktop-entry>@SCOPE_INSTALL_NAME@.desktop</desktop-entry>
  <services>
    <service id="@SCOPE_INSTALL_NAME@">
      <description>Watch your favorite Weibo messages</description>
    </service>
  </services>
</application>


这个是微博Scope的描述文件。它定义了Scope的service id及描述

weibo.service.in


<?xml version="1.0" encoding="UTF-8"?>
<service>
  <type>sharing</type>
  <name>Weibo scope</name>
  <icon>weibo/icon.png</icon>
  <provider>@SCOPE_ACCOUNTS_NAME@</provider>
  <translations>unity-scope-weibo</translations>
</service>

这个service文件描述了微博Scope的service信息。

weibo.provider.in

这是一个微博的account provider信息。这是一个重要的文件。如果我们不能正确地设置这个文件,可能我们不能正确地访问微博account。

<?xml version="1.0" encoding="UTF-8"?>
<provider>
  <name>Weibo</name>
  <icon>weibo/icon.png</icon>
  <translations>unity-scope-weibo</translations>
  <plugin>generic-oauth</plugin>
  <domains>.*weibo\.com</domains>
  <single-account>true</single-account>

  <template>
    <group name="auth">
      <setting name="method">oauth2</setting>
      <setting name="mechanism">web_server</setting>
      <group name="oauth2">
        <group name="web_server">
          <setting name="Host">api.weibo.com</setting>
          <setting name="AuthPath">oauth2/authorize</setting>
          <setting name="TokenPath">oauth2/access_token</setting>
          <setting name="RedirectUri">https://api.weibo.com/oauth2/default.html</setting>
          <setting name="ResponseType">code</setting>
          <setting name="ClientId">your developer key</setting>
          <setting type="as" name="AllowedSchemes">['https','http']</setting>
          <setting name="ClientSecret">your developer secret</setting>
          <setting name="ForceClientAuthViaRequestBody" type="b">true</setting>  
      </group>
      </group>
    </group>
  </template>
</provider>

我们需要在“微博开放平台”去申请开发者key及secret。同时,我们一定要记得在微博的设置中做如下的设置,否则我们不能得到正确的数据。



“click”目录下的CMakeLists.txt文件内容如下:

function(configure_scope_files)
  foreach(_file ${ARGV})
    configure_file(
      "${_file}.in"
      "${CMAKE_CURRENT_BINARY_DIR}/${_file}"
      @ONLY
    )
  endforeach()
endfunction()

configure_scope_files(
  manifest.json
  weibo.provider
  weibo.service
  weibo.application
)

add_custom_target(hidden_files1
  ALL
  SOURCES
    apparmor.json
)

install(
  FILES
    "${CMAKE_CURRENT_BINARY_DIR}/manifest.json"
    "apparmor.json"
    "${CMAKE_CURRENT_BINARY_DIR}/weibo.provider"
    "${CMAKE_CURRENT_BINARY_DIR}/weibo.service"
    "${CMAKE_CURRENT_BINARY_DIR}/weibo.application"
  DESTINATION ${CMAKE_INSTALL_PREFIX}
)

install(
  DIRECTORY
    "qml-plugin"
  DESTINATION ${CMAKE_INSTALL_PREFIX}
)

这里它对该目录下的文件进行了安装。

为了能够对Scope的设置文件“weibo.ubuntu_weibo.ini.in”进行本地化的支持,我们对“data\CMakeListx.txt”加入如下的句子:

intltool_merge_translations(
  "${CMAKE_CURRENT_SOURCE_DIR}/${SCOPE_NAME}.ini.in"
  "${CMAKE_CURRENT_BINARY_DIR}/${SCOPE_INSTALL_NAME}.ini"
  ALL
  UTF8
)

这样它可以提取里面相应的英文,并在“po”目录中的.pot文件中进行翻译。

经过我们这样的修改后,我们的最基本的具有online account的设置文件已经基本已经做好了。我们可以在我们的手机或模拟器中运行我们的Scope了。在运行时,



我们选择“yes”继续运行。我们可以看到如下的画面:




者和我们所创建的最基本的Scope没有任何的差别,我们可以在手机的如下地址查看该目录的内容:



这个是我们所创建weibo provider的地方。


3)对代码进行修改

我们在上面已经对online account的配置文件做了修改。下面我们来对我们的cpp代码进行修改,为了能够使得我们使用online account,我们在query.cpp文件中加入如下的代码:

const static string SEARCH_CATEGORY_LOGIN_NAG = R"(
{
        "schema-version": 1,
        "template": {
        "category-layout": "grid",
        "card-size": "large",
        "card-background": "color:///#1ab7ea"
        },
        "components": {
        "title": "title",
        "background": "background",
        "art" : {
        "aspect-ratio": 100.0
        }
        }
        }
        )";


void Query::run(sc::SearchReplyProxy const& reply) {
    add_login_nag(reply);
 ...
}

void Query::add_login_nag(const sc::SearchReplyProxy &reply) {
    //    if (getenv("VIMEO_SCOPE_IGNORE_ACCOUNTS")) {
    //        return;
    //    }
    qDebug() << "SCOPE_INSTALL_NAME: " << SCOPE_INSTALL_NAME;
    qDebug() << "SCOPE_ACCOUNTS_NAME: " << SCOPE_ACCOUNTS_NAME;

    sc::OnlineAccountClient oa_client(SCOPE_INSTALL_NAME, "sharing", SCOPE_ACCOUNTS_NAME);

    // Check if our service is authenticated
    bool service_authenticated = false;

    int count = oa_client.get_service_statuses().size();
    qDebug() << "count: " << count;

    for ( sc::OnlineAccountClient::ServiceStatus const& status :
          oa_client.get_service_statuses())
    {
        if (status.service_authenticated)
        {
            service_authenticated = true;
            qDebug() << "Sevice is authenticated!";
            qDebug() << "account id: "  << status.account_id;
            qDebug() << "client id: " << QString::fromStdString(status.client_id);
            qDebug() << "service enabled: " << status.service_enabled;
            qDebug() << "secret: " << QString::fromStdString(status.client_secret);
            qDebug() << "access token: " << QString::fromStdString(status.access_token);
            accessToken_ = QString::fromStdString(status.access_token);

            // pass the access token to the client so that http request can be made
            client_.setAccessToken(accessToken_);
            break;
        }
    }

    if (!service_authenticated)
    {
        qDebug() << "Service is not authenicated!";

        sc::CategoryRenderer rdr(SEARCH_CATEGORY_LOGIN_NAG);
        auto cat = reply->register_category("weibo_login_nag", "", "", rdr);

        sc::CategorisedResult res(cat);
        res.set_title(_("Log-in to Weibo"));

        oa_client.register_account_login_item(res,
                                              query(),
                                              sc::OnlineAccountClient::InvalidateResults,
                                              sc::OnlineAccountClient::DoNothing);

        reply->push(res);
    }
}

重新运行我们的Scope,我们可以在手机上看到如下的画面:


我们点击“Log-in to Weibo”按钮:



我们使用我们自己的微博的账号进行登陆,在代码中,我们可以看到:



我们打开手机中的“系统设置”,再打开“账号”,当我们完成我们自己的账号登陆微博后,可以看到:



这说明我们的online account设置等已经是成功的。我们更进一步对我们的client代码进行修改,我们可以看到如下的画面:




整个项目的source code可以在如下的地址下载:

git clone https://gitcafe.com/ubuntu/weibo.git

在使用代码时,一定要在“click/weibo.provider.in”中填入自己的开发者key及secret。
作者:UbuntuTouch 发表于2015/2/3 11:51:37 原文链接
阅读:571 评论:0 查看评论

Read more
UbuntuTouch

在这个视频里,介绍如何在开发Ubuntu平台上开发Webapps及HTML 5的应用。


http://v.youku.com/v_show/id_XODkwNDQxMDQ0.html

作者:UbuntuTouch 发表于2015/2/10 19:26:33 原文链接
阅读:381 评论:0 查看评论

Read more
Daniel Holbach

I already blogged about the help app I was working on a bit in the last time. I wanted to go into a bit more detail now that we reached a new milestone.

What’s the idea behind it?

In a conversation in the Community team we noticed that there’s a lot of knowledge we gathered in the course of having used Ubuntu on a phone for a long time and that it might make sense to share tips and tricks, FAQ, suggestions and lots more with new device users in a simple way.

The idea was to share things like “here’s how to use edge swipes to do X” (maybe an animated GIF?) and “if you want to do Y, install the Z app from the store” in an organised and clever fashion. Obviously we would want this to be easily editable (Markdown) and have easy translations (Launchpad), work well on the phone (Ubuntu HTML5 UI toolkit) and work well on the web (Ubuntu Design Web guidelines) too.

What’s the state of things now?

There’s not much content yet and it doesn’t look perfect, but we have all the infrastructure set up. You can now start contributing! :-)

screenshot of web editionscreenshot of web edition screenshot of phone app editionscreenshot of phone app edition

 

What’s still left to be done?

  • We need HTML/CSS gurus who can help beautifying the themes.
  • We need people to share their tips and tricks and favourite bits of their Ubuntu devices experience.
  • We need hackers who can help in a few places.
  • We need translators.

What you need to do? For translations: you can do it in Launchpad easily. For everything else:

$ bzr branch lp:ubuntu-devices-help
$ cd ubuntu-devices-help
$ less HACKING

We’ve come a long way in the last week and with the easy of Markdown text and easy Launchpad translations, we should quickly be in a state where we can offer this in the Ubuntu software store and publish the content on the web as well.

If you want to write some content, translate, beautify or fix a few bugs, your help is going to be appreciated. Just ping myself, Nick Skaggs or David Planella on #ubuntu-app-devel.

Read more
Ben Howard

Back when we announced that the Ubuntu 14.04 LTS Cloud Images on Azure were using the Hardware Enablement Kernel (HWE), the immediate feedback was "what about 12.04?"


Well, the next Ubuntu 12.04 Cloud Images on Microsoft Azure will start using the HWE kernel. We have been working with Microsoft to validate using the 3.13 kernel on 12.04 and are pleased with the results and the stability. We spent a lot of time thinking about and testing this change, and in conference with the Ubuntu Kernel, Foundations and Cloud Image teams, feel this change will give the best experience on Microsoft Azure. 

By default, the HWE kernel is used on official images for Ubuntu 12.04 on VMware Air, Google Compute Engine, and now Microsoft Azure. 

Any 12.04 Image published to Azure with a serial later than 20140225 will default to the new HWE kernel. 

Users who want to upgrade their existing instance can simply run:
  • sudo apt-get update
  • sudo apt-get install linux-image-hwe-generic linux-cloud-tools-generic-lts-trusty
  • reboot

Read more
facundo

Chau ACA


Unos meses atrás, justo cuando yo estaba de viaje en Washington, en el último sprint del laburo del año pasado, Moni tuvo problemas con el auto.

Un día que pasó a buscar a Felu por el jardín el auto no le arrancó. Pero lo importante no es el problema que tenía el auto, esta historia pasa por otro lado.

Moni llamó al Automóvil Club Argentino (que tengo desde hace más de diez años), para que la vengan a socorrer, y a priori no lo quisieron dar servicio. Le dijeron que ella no era la titular (lo cual es cierto, está a mi nombre), y que matanga. Ante la insistencia de Moni, le dijeron que lo iban a hacer sólo por esa oportunidad. Finalmente, la fueron a buscar, hubo un cambio de batería, etc, etc, final feliz.

Pero, ¿qué pasa si Moni vuelve a tener un problema con el auto?

Yo siempre creí que el ACA me cubría el auto, más allá de quien lo manejara. Parece que no. Según le dijeron a ella en ese momento, lo que luego confirmé en el call center, y luego personalmente en una sucursal, es que para que la cubran a ella se debería dar una de dos situaciones.

La primera, es que ella tenga una cédula azul del auto. Moni tiene la cédula verde del mismo (es tan dueña como yo), con lo cual no vamos a sacar la azul, y no tiene sentido que si la cédula es azul le den servicio, pero si es verde no.

La segunda es que haga una extensión familiar del servicio. Averigüé precios de esto, y es casi como sacar un segundo plan del ACA. Hoy por hoy la cuota del ACA es un poco alta, y sube un poquito todos los meses (todos los meses, eso me molesta bastante); duplicar ese costo no tiene sentido.

Bastante disgustado con toda esta situación, sopesé durante bastante tiempo la idea de darme de baja del servicio del Automóvil Club Argentino. Me cuesta un montón, porque me gustan un montón de cosas del ACA, su federalidad, la participación en el crecimiento de tantas ciudades pequeñas del país, etc... pero la verdad es que todo lo sucedido me rompió bastante las pelotas.

Mi viejo tuvo la idea de que exprese todo esto en una carta a la Comisión Directiva del club, a ver qué me decían. Armé un documento y se los presenté a fines de Noviembre. Me contestaron a mitad de Enero, un tal Juan Jorge Agüero ("Jefe Administrativo de Iniciativas y Observaciones de Socios"), en una carta toda escrita en mayúsculas en la que básicamente mandaba fruta.

¿Por qué fruta? Porque contestó un montón de generalidades, con cosas como (convertido a minúsculas por respeto a ustedes) "se procedió a realizar el traslado de su observación al área de auxilio mecánico a fin de que se tomen las medidas correctivas pertinentes..."; claro, no hay ninguna medida correctiva pertinente, así que no me sirve para nada.

En fin, tomé la decisión de irme del ACA.

Me voy a quedar con el seguro de La Caja, sí, que siempre me respondió en tiempo y forma. Tampoco es que voy a ahorrar guita, porque el seguro directo (con el precio del auto actualizado) es sólo un poco menos que el seguro más la cuota social del ACA sumados. Pero el gran diferencial es que el servicio mecánico que me dan ("AuxiCaja") me sirve más allá de quien esté manejando el auto.

Read more
Joseph Salisbury

Meeting Minutes

IRC Log of the meeting.

Meeting minutes.

Agenda

20150224 Meeting Agenda


Release Metrics and Incoming Bugs

Release metrics and incoming bug data can be reviewed at the following link:

  • http://people.canonical.com/~kernel/reports/kt-meeting.txt


Status: Vivid Development Kernel

We are preparing to shove our 3.19 based kernel following beta freeze.
When it lands, please do test and let us know your results.
—–
Important upcoming dates:
Thurs Feb 26 – Beta 1 (~2 days away)
Thurs Mar 26 – Final Beta (~4 weeks away)
Thurs Apr 09 – Kernel Freeze (~6 weeks away)


Status: CVE’s

The current CVE status can be reviewed at the following link:

http://people.canonical.com/~kernel/cve/pkg/ALL-linux.html


Status: Stable, Security, and Bugfix Kernel Updates – Utopic/Trusty/Precise/Lucid

Status for the main kernels, until today:

  • Lucid – Testing
  • Precise – Testing
  • Trusty – Testing
  • Utopic – Testing

    Current opened tracking bugs details:

  • http://kernel.ubuntu.com/sru/kernel-sru-workflow.html

    For SRUs, SRU report is a good source of information:

  • http://kernel.ubuntu.com/sru/sru-report.html

    Schedule:

    Current cycle had ended. Waiting for next cycle to start on Mar. 08.

    cycle: 06-Feb through 28-Feb
    ====================================================================
    06-Feb Last day for kernel commits for this cycle
    08-Feb – 14-Feb Kernel prep week.
    15-Feb – 28-Feb Bug verification; Regression testing; Release


Open Discussion or Questions? Raise your hand to be recognized

No open discussions.

Read more
David Callé

Announcing the Ubuntu Porting guide 2.0

In the last few weeks, Ubuntu has reached a major milestone with the first flash sales of the BQ Aquarius - Ubuntu Edition. This is only the beginning of seeing Ubuntu on a wider selection of phones and tablets, and thanks to an incredibly enthusiast porting community, more devices have been part of that show. Some of these skilled porters have even set up their own image server to provide updates over-the-air!

To ease the porting process, the Porting Guide has been updated to reflect the current procedure of enabling new devices. From setting up your dev environment, to configuring the kernel and debugging AppArmor, it covers the main points of making a fully working port. Currently focusing on AOSP ports, it will be extended in due time to detail CyanogenMod-specific processes.

If you are interested in porting, please make sure you provide feedback on any issues and roadblocks that could arise, either on Launchpad or on the ubuntu-phone mailing-list.

Thank you and good work, fellow devices adventurers!

Read more
David Planella

This is a guest post from Jordi Allue, Senior SW Architect at Tuso technologies
 
In September 2014, Ubuntu invited Tuso Technologies to be one of the first Ubuntu Phone OS developers with a version of Fiabee’s Cloud-Mobile Collaboration, Synchronisation and Sharing App for the new Ubuntu Phone OS. We jumped at the opportunity because it was in line with Tuso Technologies’ cross-platform compatibility strategy and found it to be an interesting challenge. The process was far simpler and faster than we originally expected, and the results exceeded our expectations.

Fiabee is a carrier-grade, enterprise caliber, cloud-mobile Collaboration, Synchronization and Sharing Software-as-a-Service (SaaS). With Fiabee, Telecom Operators, Internet Service Providers and other Managed Service Providers generate new revenues and reduce churn by taking market share away from large OTT App (Over The Top Application) providers.

Ubuntu Phone Apps are created natively or in HTML5 within a WebApp. Fiabee’s existing HTML5 app, which includes CSS3 and Javascript, was the ideal match for Ubuntu Phone.

We started the process by installing Ubuntu’s Software Development Kit (SDK) and making ourselves familiar with it. The installation was straight forward with a simple "apt-get install ubuntu-sdk" instruction. Although we had no prior experience with Ubuntu’s Integration Development Environment (IDE), based on Qt Creator, the tutorials available on Ubuntu’s website helped us create our first HTML5 trial app. Next we tested the app directly on an Ubuntu Phone, getting familiar with Ubuntu’s Operating System (OS) and IDE was the most challenging of the tasks. That said, it only took us a few days to prepare the infrastructure to develop our own app. For those who don’t have an Ubuntu Phone, Ubuntu’s SDK provides a mobile device emulator.

From there on, it was easy to adapt Fiabee’s web application to Ubuntu’s environment. With the help of the SDK instructions and manuals, we integrated the Web app into the development project, ran it on the device and created the deployment package. After configuration, we adapted the visual appearance and operation to Ubuntu’s standards.

We were amazed to find that the functions of Fiabee’s App which are often difficult to adapt were almost automatic with Ubuntu Phone, such as accessing the phone’s file system, interacting with third party Apps or opening documents downloaded from the cloud. This demonstrates that Ubuntu OS is truly “open”. During the last steps of creating the package and uploading it to the Ubuntu App Directory, we had a minor problem with the definition of the App’s security policies but that was quickly resolved with the help of Ubuntu’s App Directory Tech Support team.

From our perspective, bringing Fiabee to Ubuntu Phones was a piece of cake. It was a quicker and an easier experience than we’ve had with other platforms, despite it being new and notably different from the others with its App interaction menu. We were able to carry over all the functionalities of the Fiabee App without losing any, as was the case with other platforms, and without having to invest re-development time. It was as simple as tweeking Fiabee’s existing web app. With Fiabee’s App for Ubuntu Phones, we continue to deliver a good user experience to Fiabee users with a further extended range of mobile devices with which to access our service.

About Tuso technologies SL. Founded in late 2008, with offices in Barcelona, Spain, and Palo Alto, USA, Tuso Technologies develops carrier-grade, enterprise-caliber, cloud-mobile Value-Added-Services (VAS), including Fiabee, Locategy & Open API, selected by leading Mobile Network Operators, ISV and corporations such as Telefonica (Movistar), France Telecom (Orange) , Ono (Vodafone), R Cable, Panda Security, Applus+ among others.

Read more
Colin Ian King

Over the past year or more I was focused on identifying power consuming processes on various mobile devices.  One of many strategies to reducing power is to remove unnecessary file system activity, such as extraneous logging, repeated file writes, unnecessary file re-reads and to reduce metadata updates.

Fnotifystat is a utility I wrote to help identify such file system activity. My desire was to make the tool as small as possible for small embedded devices and to be relatively flexible without the need of using perf just in case the target device did not have perf built into the kernel by default.

By default, fnotifystat will dump out every second any file system open/close/read/write operations across all mounted file systems, however, one can specify the delay in seconds and the number of times to dump out statistics.   fnotifystat uses the fanotify(7) interface to get file activity across the system, hence it needs to be run with CAP_SYS_ADMIN capability.

An open(2), read(2)/write(2) and close(2) sequence by a process can produce multiple events, so fnotifystat has a -m option to merge events and hence reduce the amount of output.  A verbose -v option will output all file events if one desires to see the full system activity.

If one desires to just monitor a specific collection of processes, one can specify a list of the process ID(s) or process names using the -p option, for example:

sudo fnotifystat -p firefox,thunderbird

fnotifystat catch events on all mounted file systems, but one can restrict that by specifying just path(s) one is interested in using the -i (include) option, for example:

sudo fnotifystat -i /proc

..and one can exclude paths using the -x option.

More information and examples can be found on the fnotifystat project page and the manual also contains more details and some examples too.

Fnotifystat 0.01.10 is available in Ubuntu Vivid Vervet 15.04 and can also be installed for older releases from my power management tools PPA.

Read more
Prakash

Facebook said today that it’s giving away a tool it built to spot errors in Android application code.

Facebook has gradually improved its main app for Android, as well as other apps for the mobile operating system, including Messenger, Facebook Groups, Facebook Pages Manager, and most recently Facebook at Work.

Read More: http://venturebeat.com/2015/02/18/facebook-unleashes-stetho-its-android-debugging-tool-under-open-source-license

Read more
Ryan Finnie

One of the nice things about the Raspberry Pi 2 is it has a Cortex-A7-based ARMv7 CPU, as opposed to the original Pi's ARMv6 CPU. This not only allows many more distributions to run on it (as most armhf distributions are compiled to ARMv7 minimum), but also brings with it the performance benefits associated with userland ARMv7 code. After releasing an Ubuntu 14.04 (trusty) image for the Raspberry Pi 2, I decided to pit Raspbian (which uses an ARMv6 userland for compatibility between the original Pi and the Pi 2) against Ubuntu (which is only compiled to ARMv7). I also benchmarked a Utilite Pro, an ARM system with a faster CPU and built-in SSD, and a modern Intel server.

  • Raspberry Pi B, 700 MHz 1-core BCM2708 CPU, 512 MiB memory, 16 GB SanDisk SDHC Class 4
  • Raspberry Pi 2 B, 900 MHz 4-core BCM2709 CPU, 1 GiB memory, 32 GB SanDisk Ultra Plus microSDHC Class 10 UHS-1
  • Utilite Pro, 1 GHz 4-core i.MX6 CPU, 2 GiB memory, 32 GB SanDisk U110 SSD
  • ASRock Z97 Pro3, 3.5 GHz 4-core Intel Core i5-4690K, 32 GiB memory, 4x 2TB Seagate ST2000DL003 5900 RPM in MD RAID 10

Raspbian wheezy was tested on both Raspberry Pi models, while Ubuntu trusty was also tested on the Raspberry Pi 2, along with the rest of the systems. All installations were current as of today. The systems were tested with nbench (BYTEmark), OpenSSL and Bonnie++.

Results

This is a hand-picked assortment of test results; for the full raw results, see below.

Test RPi B
Raspbian
RPi 2
Raspbian
RPi 2
Ubuntu
Utilite
Ubuntu
i5-4690K
Ubuntu
Numeric sort 217.2 450.72 421.55 334.63 2,385.1
FP emulation 41.334 70.276 55.108 52.454 795.9
IDEA 694.72 1,308.5 1,573.3 1,315 15,059
md5 1024 37,008.46 62,628.86 69,563.39 80,632.53 670,637.40
aes-256 cbc 1024 11,969.50 18,445.31 17,295.36 20,986.47 124,509.53
sha512 1024 8,491.32 11,838.81 20,718.25 25,803.70 431,647.74
whirlpool 1024 1,584.61 2,949.80 2,747.05 2,687.46 135,009.28
rsa 1024 verify 1,540.3 2,649.6 2,630.5 2,890.8 114,074.5
ecdsa 256 verify 73.2 126.3 138.0 161.1 4,329.6
Block output 7,520 11,028 11,299 48,214 62,762
Block input 13,233 23,015 22,997 125,954 284,914
Random seeks 524.7 1,054 874.6 3,218 444.5

Notes

  • Interestingly, many of the BYTEmark tests on the Pi 2 were faster on Raspbian than on Ubuntu. But keep in mind that these are tests from the 1990s, and are not taking advantage of modern optimizations (like the floating point emulation test). Many OpenSSL tests performed better on Ubuntu, but not all.
  • Edit: The slower nbench results in Ubuntu appear to be due to a running LSM (Linux Security Module). When Ubuntu is running with AppArmor (default) or SELinux enabled, it's marginally slower than Raspbian, but with LSMs disabled, it's marginally faster than Raspbian. (The Raspbian kernel has no LSM modules compiled in.) I'm keeping these test results as they are because AppArmor is enabled by default, but keep that in mind.
  • Raspbian/Ubuntu aside, virtually all of the tests were faster on the Pi 2 than the original Pi.
  • Bonnie++ tests were roughly the same between Raspbian and Ubuntu on Pi 2, and were decently faster than the original Pi (though in this test an older SDHC card was used for the original Pi, so it's not apples to apples). The SSD on the Utilite blows them away though.
  • All of the CPU tests are single-threaded, and do not take multi-core performance into consideration.
  • This was not a controlled scientific test. I did not run multiple tests on each system and average them together, and in the Intel system's case, it was an active (but low volume) server.
  • All Bonnie++ tests were run with swap disabled and on the boot drive, except for the Intel system where the boot drive (an SSD) did not have enough space for a full test. (Bonnie++ requires twice the amount of RAM as disk to run. On 512 MiB / 1 GiB / 2 GiB systems that's fine, but I didn't have 64 GiB free on the the Intel system's boot drive.

Raw results

RPi B

BYTEmark* Native Mode Benchmark ver. 2 (10/95)
Index-split by Andrew D. Balsa (11/97)
Linux/Unix* port by Uwe F. Mayer (12/96,11/97)

TEST                : Iterations/sec.  : Old Index   : New Index
                    :                  : Pentium 90* : AMD K6/233*
--------------------:------------------:-------------:------------
NUMERIC SORT        :           217.2  :       5.57  :       1.83
STRING SORT         :          30.638  :      13.69  :       2.12
BITFIELD            :      8.3354e+07  :      14.30  :       2.99
FP EMULATION        :          41.334  :      19.83  :       4.58
FOURIER             :          2359.7  :       2.68  :       1.51
ASSIGNMENT          :          2.5804  :       9.82  :       2.55
IDEA                :          694.72  :      10.63  :       3.15
HUFFMAN             :          428.85  :      11.89  :       3.80
NEURAL NET          :          3.1952  :       5.13  :       2.16
LU DECOMPOSITION    :           75.29  :       3.90  :       2.82
==========================ORIGINAL BYTEMARK RESULTS==========================
INTEGER INDEX       : 11.514
FLOATING-POINT INDEX: 3.773
Baseline (MSDOS*)   : Pentium* 90, 256 KB L2-cache, Watcom* compiler 10.0
==============================LINUX DATA BELOW===============================
CPU                 : ARMv6-compatible processor rev 7 (v6l)
L2 Cache            : 
OS                  : Linux 3.18.7+
C compiler          : gcc version 4.6.3 (Debian 4.6.3-14+rpi1) 
libc                : libc-2.13.so
MEMORY INDEX        : 2.526
INTEGER INDEX       : 3.165
FLOATING-POINT INDEX: 2.093
Baseline (LINUX)    : AMD K6/233*, 512 KB L2-cache, gcc 2.7.2.3, libc-5.4.38
* Trademarks are property of their respective holder.

Version  1.96       ------Sequential Output------ --Sequential Input- --Random-
Concurrency   1     -Per Chr- --Block-- -Rewrite- -Per Chr- --Block-- --Seeks--
Machine        Size K/sec %CP K/sec %CP K/sec %CP K/sec %CP K/sec %CP  /sec %CP
raspberrypi      1G    42  99  7520  14  4514   8   443  99 13233  11 524.7  51
Latency               276ms    9344ms    5262ms   26123us   16149us   34751us
Version  1.96       ------Sequential Create------ --------Random Create--------
raspberrypi         -Create-- --Read--- -Delete-- -Create-- --Read--- -Delete--
              files  /sec %CP  /sec %CP  /sec %CP  /sec %CP  /sec %CP  /sec %CP
                 16  2586  57 +++++ +++  3886  55  3200  70 +++++ +++  3696  53
Latency              2726us    5095us    4832us    2743us     307us    2468us
1.96,1.96,raspberrypi,1,1424560958,1G,,42,99,7520,14,4514,8,443,99,13233,11,524.7,51,16,,,,,2586,57,+++++,+++,3886,55,3200,70,+++++,+++,3696,53,276ms,9344ms,5262ms,26123us,16149us,34751us,2726us,5095us,4832us,2743us,307us,2468us

OpenSSL 1.0.1e 11 Feb 2013
built on: Fri Jun  6 15:02:47 UTC 2014
options:bn(64,32) rc4(ptr,char) des(idx,cisc,16,long) aes(partial) blowfish(ptr) 
compiler: gcc -fPIC -DOPENSSL_PIC -DZLIB -DOPENSSL_THREADS -D_REENTRANT -DDSO_DLFCN -DHAVE_DLFCN_H -DL_ENDIAN -DTERMIO -g -O2 -fstack-protector --param=ssp-buffer-size=4 -Wformat -Werror=format-security -D_FORTIFY_SOURCE=2 -Wl,-z,relro -Wa,--noexecstack -Wall -DOPENSSL_BN_ASM_MONT -DOPENSSL_BN_ASM_GF2m -DSHA1_ASM -DSHA256_ASM -DSHA512_ASM -DAES_ASM -DGHASH_ASM
The 'numbers' are in 1000s of bytes per second processed.
type             16 bytes     64 bytes    256 bytes   1024 bytes   8192 bytes
md2                  0.00         0.00         0.00         0.00         0.00 
mdc2                 0.00         0.00         0.00         0.00         0.00 
md4               2111.92k     7710.99k    23471.96k    48774.36k    70500.68k
md5               1575.49k     5735.79k    17700.13k    37008.46k    53661.71k
hmac(md5)         2724.28k     9222.25k    25068.61k    43978.74k    56001.50k
sha1              1834.41k     6005.60k    15216.97k    24641.76k    30080.26k
rmd160            1391.15k     4389.22k    10595.31k    16489.15k    19804.23k
rc4              34807.13k    40177.89k    41639.59k    42066.47k    42146.33k
des cbc           6241.84k     6592.86k     6662.08k     6715.25k     6682.37k
des ede3          2281.85k     2351.88k     2374.12k     2370.95k     2385.89k
idea cbc             0.00         0.00         0.00         0.00         0.00 
seed cbc          7857.93k     9024.04k     9347.69k     9446.83k     9482.45k
rc2 cbc           6075.61k     6397.57k     6474.49k     6491.95k     6534.29k
rc5-32/12 cbc        0.00         0.00         0.00         0.00         0.00 
blowfish cbc     11636.94k    12964.88k    13267.65k    13459.91k    13439.83k
cast cbc          9786.53k    11425.48k    11879.08k    11967.79k    11967.44k
aes-128 cbc      13080.39k    14961.80k    15568.42k    15649.73k    15723.71k
aes-192 cbc      11587.16k    12963.16k    13444.83k    13519.88k    13551.05k
aes-256 cbc      10360.83k    11460.35k    11866.72k    11969.50k    12059.83k
camellia-128 cbc     8748.67k    10194.79k    10655.76k    10786.59k    10792.07k
camellia-192 cbc     7147.44k     8142.29k     8373.08k     8462.90k     8517.47k
camellia-256 cbc     7123.43k     8075.43k     8361.70k     8479.96k     8507.08k
sha256            3658.39k     8428.37k    14875.23k    18311.67k    19586.83k
sha512            1085.66k     4327.83k     6221.40k     8491.32k     9533.51k
whirlpool          387.65k      786.62k     1299.52k     1584.61k     1685.13k
aes-128 ige      11574.51k    13695.36k    14529.56k    14645.61k    14345.65k
aes-192 ige      10408.42k    12080.82k    12692.24k    12720.55k    12468.83k
aes-256 ige       9362.89k    10807.50k    11218.30k    11325.65k    11100.43k
ghash            15969.05k    17589.81k    18060.24k    18286.30k    18123.77k
                  sign    verify    sign/s verify/s
rsa  512 bits 0.002215s 0.000229s    451.6   4364.5
rsa 1024 bits 0.011254s 0.000649s     88.9   1540.3
rsa 2048 bits 0.073529s 0.002276s     13.6    439.5
rsa 4096 bits 0.535789s 0.008645s      1.9    115.7
                  sign    verify    sign/s verify/s
dsa  512 bits 0.002236s 0.002353s    447.2    424.9
dsa 1024 bits 0.006300s 0.007022s    158.7    142.4
dsa 2048 bits 0.022053s 0.025711s     45.3     38.9
                              sign    verify    sign/s verify/s
 160 bit ecdsa (secp160r1)   0.0018s   0.0059s    569.9    169.5
 192 bit ecdsa (nistp192)   0.0022s   0.0084s    462.0    119.7
 224 bit ecdsa (nistp224)   0.0027s   0.0106s    364.8     94.1
 256 bit ecdsa (nistp256)   0.0032s   0.0137s    307.7     73.2
 384 bit ecdsa (nistp384)   0.0065s   0.0314s    153.8     31.9
 521 bit ecdsa (nistp521)   0.0130s   0.0686s     77.1     14.6
 163 bit ecdsa (nistk163)   0.0047s   0.0170s    212.2     58.7
 233 bit ecdsa (nistk233)   0.0095s   0.0306s    105.4     32.6
 283 bit ecdsa (nistk283)   0.0141s   0.0560s     71.0     17.9
 409 bit ecdsa (nistk409)   0.0350s   0.1238s     28.5      8.1
 571 bit ecdsa (nistk571)   0.0845s   0.2883s     11.8      3.5
 163 bit ecdsa (nistb163)   0.0046s   0.0182s    217.0     55.0
 233 bit ecdsa (nistb233)   0.0093s   0.0333s    107.9     30.0
 283 bit ecdsa (nistb283)   0.0141s   0.0623s     71.0     16.1
 409 bit ecdsa (nistb409)   0.0350s   0.1401s     28.5      7.1
 571 bit ecdsa (nistb571)   0.0844s   0.3290s     11.9      3.0
                              op      op/s
 160 bit ecdh (secp160r1)   0.0050s    200.8
 192 bit ecdh (nistp192)   0.0066s    151.5
 224 bit ecdh (nistp224)   0.0084s    118.8
 256 bit ecdh (nistp256)   0.0110s     91.0
 384 bit ecdh (nistp384)   0.0261s     38.3
 521 bit ecdh (nistp521)   0.0567s     17.6
 163 bit ecdh (nistk163)   0.0082s    121.7
 233 bit ecdh (nistk233)   0.0149s     67.1
 283 bit ecdh (nistk283)   0.0274s     36.4
 409 bit ecdh (nistk409)   0.0611s     16.4
 571 bit ecdh (nistk571)   0.1427s      7.0
 163 bit ecdh (nistb163)   0.0088s    113.1
 233 bit ecdh (nistb233)   0.0164s     60.9
 283 bit ecdh (nistb283)   0.0306s     32.6
 409 bit ecdh (nistb409)   0.0697s     14.4
 571 bit ecdh (nistb571)   0.1634s      6.1

RPi 2 Raspbian

BYTEmark* Native Mode Benchmark ver. 2 (10/95)
Index-split by Andrew D. Balsa (11/97)
Linux/Unix* port by Uwe F. Mayer (12/96,11/97)

TEST                : Iterations/sec.  : Old Index   : New Index
                    :                  : Pentium 90* : AMD K6/233*
--------------------:------------------:-------------:------------
NUMERIC SORT        :          450.72  :      11.56  :       3.80
STRING SORT         :          36.422  :      16.27  :       2.52
BITFIELD            :      1.2923e+08  :      22.17  :       4.63
FP EMULATION        :          70.276  :      33.72  :       7.78
FOURIER             :          4762.7  :       5.42  :       3.04
ASSIGNMENT          :          6.8898  :      26.22  :       6.80
IDEA                :          1308.5  :      20.01  :       5.94
HUFFMAN             :          657.63  :      18.24  :       5.82
NEURAL NET          :          6.2476  :      10.04  :       4.22
LU DECOMPOSITION    :          229.36  :      11.88  :       8.58
==========================ORIGINAL BYTEMARK RESULTS==========================
INTEGER INDEX       : 20.143
FLOATING-POINT INDEX: 8.644
Baseline (MSDOS*)   : Pentium* 90, 256 KB L2-cache, Watcom* compiler 10.0
==============================LINUX DATA BELOW===============================
CPU                 : 4 CPU ARMv7 Processor rev 5 (v7l)
L2 Cache            : 
OS                  : Linux 3.18.7-v7+
C compiler          : gcc version 4.6.3 (Debian 4.6.3-14+rpi1) 
libc                : libc-2.13.so
MEMORY INDEX        : 4.296
INTEGER INDEX       : 5.654
FLOATING-POINT INDEX: 4.794
Baseline (LINUX)    : AMD K6/233*, 512 KB L2-cache, gcc 2.7.2.3, libc-5.4.38
* Trademarks are property of their respective holder.

Version  1.96       ------Sequential Output------ --Sequential Input- --Random-
Concurrency   1     -Per Chr- --Block-- -Rewrite- -Per Chr- --Block-- --Seeks--
Machine        Size K/sec %CP K/sec %CP K/sec %CP K/sec %CP K/sec %CP  /sec %CP
raspberrypi      2G    75  98 11028   9  7172   7   507  99 23015   9  1054  47
Latency               613ms    9537ms    6887ms   37024us   29880us   89690us
Version  1.96       ------Sequential Create------ --------Random Create--------
raspberrypi         -Create-- --Read--- -Delete-- -Create-- --Read--- -Delete--
              files  /sec %CP  /sec %CP  /sec %CP  /sec %CP  /sec %CP  /sec %CP
                 16  3861  39 +++++ +++  5097  41  7133  71 +++++ +++  4915  40
Latency               761us    3017us    3273us     694us      82us     619us
1.96,1.96,raspberrypi,1,1424557976,2G,,75,98,11028,9,7172,7,507,99,23015,9,1054,47,16,,,,,3861,39,+++++,+++,5097,41,7133,71,+++++,+++,4915,40,613ms,9537ms,6887ms,37024us,29880us,89690us,761us,3017us,3273us,694us,82us,619us

OpenSSL 1.0.1e 11 Feb 2013
built on: Thu Jan 15 21:10:17 UTC 2015
options:bn(64,32) rc4(ptr,char) des(idx,cisc,16,long) aes(partial) blowfish(ptr) 
compiler: gcc -fPIC -DOPENSSL_PIC -DZLIB -DOPENSSL_THREADS -D_REENTRANT -DDSO_DLFCN -DHAVE_DLFCN_H -DL_ENDIAN -DTERMIO -g -O2 -fstack-protector --param=ssp-buffer-size=4 -Wformat -Werror=format-security -D_FORTIFY_SOURCE=2 -Wl,-z,relro -Wa,--noexecstack -Wall -DOPENSSL_BN_ASM_MONT -DOPENSSL_BN_ASM_GF2m -DSHA1_ASM -DSHA256_ASM -DSHA512_ASM -DAES_ASM -DGHASH_ASM
The 'numbers' are in 1000s of bytes per second processed.
type             16 bytes     64 bytes    256 bytes   1024 bytes   8192 bytes
md2                  0.00         0.00         0.00         0.00         0.00 
mdc2                 0.00         0.00         0.00         0.00         0.00 
md4               5729.39k    19130.11k    49388.12k    81406.29k   100783.45k
md5               4438.31k    14612.82k    37866.07k    62628.86k    77651.97k
hmac(md5)         4319.19k    14172.82k    37175.64k    62360.92k    77799.42k
sha1              4468.70k    12776.64k    27218.26k    38258.35k    43382.10k
rmd160            3564.22k     9565.55k    19012.52k    25239.55k    27931.99k
rc4              51118.50k    57082.26k    58688.00k    59210.75k    59361.96k
des cbc          10716.11k    11323.88k    11482.62k    11527.51k    11539.80k
des ede3          4014.53k     4126.68k     4157.87k     4165.97k     4169.73k
idea cbc             0.00         0.00         0.00         0.00         0.00 
seed cbc         12535.65k    13878.08k    14283.09k    14388.91k    14420.65k
rc2 cbc           9081.97k     9540.69k     9663.23k     9694.55k     9704.79k
rc5-32/12 cbc        0.00         0.00         0.00         0.00         0.00 
blowfish cbc     17411.52k    19035.82k    19490.73k    19605.50k    19641.69k
cast cbc         16156.60k    18213.35k    18851.75k    19018.41k    19068.25k
aes-128 cbc      18509.82k    20745.75k    21447.68k    21703.32k    21684.22k
aes-192 cbc      16306.52k    17849.22k    18322.35k    18445.31k    18481.15k
aes-256 cbc      14645.75k    15878.23k    16251.90k    16348.50k    16375.81k
camellia-128 cbc    14842.11k    16692.03k    17303.64k    17463.98k    17511.77k
camellia-192 cbc    12000.46k    13217.69k    13603.50k    13703.17k    13732.52k
camellia-256 cbc    12016.46k    13221.08k    13603.84k    13703.17k    13732.52k
sha256            5168.70k    11715.06k    20019.97k    24473.94k    26167.98k
sha512            1550.01k     6186.62k     8711.34k    11838.81k    13221.89k
whirlpool          758.03k     1546.97k     2503.68k     2949.80k     3116.23k
aes-128 ige      16969.61k    19336.21k    20102.06k    20303.19k    20357.12k
aes-192 ige      14989.08k    16979.78k    17632.68k    17828.18k    17877.67k
aes-256 ige      13574.30k    15186.30k    15722.07k    15861.76k    15900.67k
ghash            24090.86k    26185.30k    27120.21k    27364.69k    27437.74k
                  sign    verify    sign/s verify/s
rsa  512 bits 0.001275s 0.000122s    784.1   8222.0
rsa 1024 bits 0.006798s 0.000377s    147.1   2649.6
rsa 2048 bits 0.045090s 0.001387s     22.2    720.8
rsa 4096 bits 0.332903s 0.005339s      3.0    187.3
                  sign    verify    sign/s verify/s
dsa  512 bits 0.001277s 0.001359s    782.9    735.9
dsa 1024 bits 0.003777s 0.004367s    264.7    229.0
dsa 2048 bits 0.013699s 0.016051s     73.0     62.3
                              sign    verify    sign/s verify/s
 160 bit ecdsa (secp160r1)   0.0009s   0.0034s   1158.6    293.8
 192 bit ecdsa (nistp192)   0.0011s   0.0046s    907.0    217.5
 224 bit ecdsa (nistp224)   0.0014s   0.0061s    724.8    163.6
 256 bit ecdsa (nistp256)   0.0017s   0.0079s    582.0    126.3
 384 bit ecdsa (nistp384)   0.0036s   0.0185s    276.3     53.9
 521 bit ecdsa (nistp521)   0.0074s   0.0408s    135.0     24.5
 163 bit ecdsa (nistk163)   0.0026s   0.0109s    382.4     91.7
 233 bit ecdsa (nistk233)   0.0056s   0.0207s    178.1     48.2
 283 bit ecdsa (nistk283)   0.0087s   0.0382s    114.5     26.2
 409 bit ecdsa (nistk409)   0.0224s   0.0870s     44.6     11.5
 571 bit ecdsa (nistk571)   0.0545s   0.2000s     18.4      5.0
 163 bit ecdsa (nistb163)   0.0026s   0.0116s    384.0     86.1
 233 bit ecdsa (nistb233)   0.0056s   0.0234s    179.7     42.7
 283 bit ecdsa (nistb283)   0.0088s   0.0428s    113.9     23.4
 409 bit ecdsa (nistb409)   0.0225s   0.0999s     44.5     10.0
 571 bit ecdsa (nistb571)   0.0543s   0.2311s     18.4      4.3
                              op      op/s
 160 bit ecdh (secp160r1)   0.0028s    353.3
 192 bit ecdh (nistp192)   0.0039s    258.4
 224 bit ecdh (nistp224)   0.0051s    195.8
 256 bit ecdh (nistp256)   0.0066s    152.4
 384 bit ecdh (nistp384)   0.0155s     64.4
 521 bit ecdh (nistp521)   0.0340s     29.4
 163 bit ecdh (nistk163)   0.0054s    184.8
 233 bit ecdh (nistk233)   0.0105s     95.5
 283 bit ecdh (nistk283)   0.0189s     53.0
 409 bit ecdh (nistk409)   0.0432s     23.2
 571 bit ecdh (nistk571)   0.1002s     10.0
 163 bit ecdh (nistb163)   0.0057s    173.9
 233 bit ecdh (nistb233)   0.0116s     86.5
 283 bit ecdh (nistb283)   0.0211s     47.3
 409 bit ecdh (nistb409)   0.0496s     20.2
 571 bit ecdh (nistb571)   0.1144s      8.7

RPi 2 Ubuntu

BYTEmark* Native Mode Benchmark ver. 2 (10/95)
Index-split by Andrew D. Balsa (11/97)
Linux/Unix* port by Uwe F. Mayer (12/96,11/97)

TEST                : Iterations/sec.  : Old Index   : New Index
                    :                  : Pentium 90* : AMD K6/233*
--------------------:------------------:-------------:------------
NUMERIC SORT        :          421.55  :      10.81  :       3.55
STRING SORT         :          44.564  :      19.91  :       3.08
BITFIELD            :      1.2551e+08  :      21.53  :       4.50
FP EMULATION        :          55.108  :      26.44  :       6.10
FOURIER             :          3900.8  :       4.44  :       2.49
ASSIGNMENT          :          7.4676  :      28.42  :       7.37
IDEA                :          1573.3  :      24.06  :       7.14
HUFFMAN             :          697.19  :      19.33  :       6.17
NEURAL NET          :          5.6795  :       9.12  :       3.84
LU DECOMPOSITION    :          229.17  :      11.87  :       8.57
==========================ORIGINAL BYTEMARK RESULTS==========================
INTEGER INDEX       : 20.685
FLOATING-POINT INDEX: 7.832
Baseline (MSDOS*)   : Pentium* 90, 256 KB L2-cache, Watcom* compiler 10.0
==============================LINUX DATA BELOW===============================
CPU                 : 4 CPU ARMv7 Processor rev 5 (v7l)
L2 Cache            : 
OS                  : Linux 3.18.0-14-rpi2
C compiler          : gcc version 4.8.2 (Ubuntu/Linaro 4.8.2-19ubuntu1) 
libc                : libc-2.19.so
MEMORY INDEX        : 4.675
INTEGER INDEX       : 5.560
FLOATING-POINT INDEX: 4.344
Baseline (LINUX)    : AMD K6/233*, 512 KB L2-cache, gcc 2.7.2.3, libc-5.4.38
* Trademarks are property of their respective holder.

Version  1.97       ------Sequential Output------ --Sequential Input- --Random-
Concurrency   1     -Per Chr- --Block-- -Rewrite- -Per Chr- --Block-- --Seeks--
Machine        Size K/sec %CP K/sec %CP K/sec %CP K/sec %CP K/sec %CP  /sec %CP
ubuntu           2G    81  99 11299  12  6663   7   458  99 22997   9 874.6  47
Latency               146ms    1964ms    1969ms   28234us   17446us    4996ms
Version  1.97       ------Sequential Create------ --------Random Create--------
ubuntu              -Create-- --Read--- -Delete-- -Create-- --Read--- -Delete--
              files  /sec %CP  /sec %CP  /sec %CP  /sec %CP  /sec %CP  /sec %CP
                 16  5377  53 +++++ +++  9181  73  5538  53 +++++ +++  8974  73
Latency               495us    3662us    3825us     579us     151us     453us
1.97,1.97,ubuntu,1,1424558285,2G,,81,99,11299,12,6663,7,458,99,22997,9,874.6,47,16,,,,,5377,53,+++++,+++,9181,73,5538,53,+++++,+++,8974,73,146ms,1964ms,1969ms,28234us,17446us,4996ms,495us,3662us,3825us,579us,151us,453us

OpenSSL 1.0.1f 6 Jan 2014
built on: Fri Jan  9 18:00:48 UTC 2015
options:bn(64,32) rc4(ptr,char) des(idx,cisc,16,long) aes(partial) blowfish(ptr) 
compiler: cc -fPIC -DOPENSSL_PIC -DOPENSSL_THREADS -D_REENTRANT -DDSO_DLFCN -DHAVE_DLFCN_H -DL_ENDIAN -DTERMIO -g -O2 -fstack-protector --param=ssp-buffer-size=4 -Wformat -Werror=format-security -D_FORTIFY_SOURCE=2 -Wl,-Bsymbolic-functions -Wl,-z,relro -Wa,--noexecstack -Wall -DOPENSSL_BN_ASM_MONT -DOPENSSL_BN_ASM_GF2m -DSHA1_ASM -DSHA256_ASM -DSHA512_ASM -DAES_ASM -DGHASH_ASM
The 'numbers' are in 1000s of bytes per second processed.
type             16 bytes     64 bytes    256 bytes   1024 bytes   8192 bytes
md2                  0.00         0.00         0.00         0.00         0.00 
mdc2                 0.00         0.00         0.00         0.00         0.00 
md4               5583.18k    19339.84k    50591.15k    84928.17k   105990.83k
md5               4933.80k    16334.36k    42260.72k    69563.39k    86103.38k
hmac(md5)         5168.09k    16575.19k    42759.08k    70127.27k    86078.81k
sha1              4753.71k    13573.10k    28955.91k    40685.57k    46178.30k
rmd160            4114.97k    11203.16k    22984.95k    30934.70k    34390.07k
rc4              51762.27k    60471.42k    63043.07k    63848.45k    64042.33k
des cbc          11655.27k    12331.43k    12531.33k    12557.65k    12569.26k
des ede3          4439.70k     4544.32k     4571.82k     4578.99k     4573.87k
idea cbc             0.00         0.00         0.00         0.00         0.00 
seed cbc         15028.15k    15992.85k    16226.46k    16152.58k    16134.68k
rc2 cbc           8283.84k     8735.81k     8842.87k     8890.31k     8896.51k
rc5-32/12 cbc        0.00         0.00         0.00         0.00         0.00 
blowfish cbc     17713.68k    19325.95k    19862.27k    19652.61k    19942.06k
cast cbc         17440.01k    18823.55k    19480.49k    19606.87k    19685.38k
aes-128 cbc      20525.47k    22075.99k    22760.96k    22951.94k    23003.14k
aes-192 cbc      17829.68k    19140.84k    19556.78k    19664.21k    19685.38k
aes-256 cbc      15833.37k    16889.54k    17187.84k    17295.36k    17317.89k
camellia-128 cbc    16605.77k    17759.25k    18107.56k    18184.19k    18071.88k
camellia-192 cbc    13084.38k    13919.70k    14156.46k    14218.58k    14196.74k
camellia-256 cbc    13120.85k    13918.42k    14240.68k    14304.60k    14305.96k
sha256            5257.09k    11834.20k    20598.02k    25311.57k    27197.99k
sha512            2573.96k    10302.66k    14994.94k    20718.25k    23317.16k
whirlpool          699.24k     1430.44k     2318.76k     2747.05k     2899.97k
aes-128 ige      19613.12k    21159.32k    21582.68k    21689.69k    21575.92k
aes-192 ige      16952.97k    18264.38k    18650.71k    18749.10k    18746.03k
aes-256 ige      15216.35k    16191.06k    16493.65k    16570.71k    16545.11k
ghash            24319.88k    26480.96k    27397.46k    27801.26k    27863.72k
                  sign    verify    sign/s verify/s
rsa  512 bits 0.001258s 0.000120s    795.1   8336.1
rsa 1024 bits 0.006826s 0.000380s    146.5   2630.5
rsa 2048 bits 0.045500s 0.001403s     22.0    712.9
rsa 4096 bits 0.336000s 0.005411s      3.0    184.8
                  sign    verify    sign/s verify/s
dsa  512 bits 0.001238s 0.001323s    807.7    755.9
dsa 1024 bits 0.003753s 0.004369s    266.5    228.9
dsa 2048 bits 0.013788s 0.016303s     72.5     61.3
                              sign    verify    sign/s verify/s
 160 bit ecdsa (secp160r1)   0.0008s   0.0030s   1315.6    333.1
 192 bit ecdsa (nistp192)   0.0010s   0.0042s   1008.8    240.5
 224 bit ecdsa (nistp224)   0.0013s   0.0056s    793.9    180.0
 256 bit ecdsa (nistp256)   0.0016s   0.0072s    634.6    138.0
 384 bit ecdsa (nistp384)   0.0034s   0.0178s    289.9     56.2
 521 bit ecdsa (nistp521)   0.0072s   0.0400s    138.9     25.0
 163 bit ecdsa (nistk163)   0.0025s   0.0092s    399.7    108.5
 233 bit ecdsa (nistk233)   0.0054s   0.0171s    186.3     58.6
 283 bit ecdsa (nistk283)   0.0084s   0.0313s    119.2     32.0
 409 bit ecdsa (nistk409)   0.0214s   0.0677s     46.7     14.8
 571 bit ecdsa (nistk571)   0.0518s   0.1578s     19.3      6.3
 163 bit ecdsa (nistb163)   0.0025s   0.0100s    402.6     99.8
 233 bit ecdsa (nistb233)   0.0053s   0.0186s    188.4     53.7
 283 bit ecdsa (nistb283)   0.0084s   0.0347s    118.8     28.8
 409 bit ecdsa (nistb409)   0.0215s   0.0764s     46.5     13.1
 571 bit ecdsa (nistb571)   0.0518s   0.1793s     19.3      5.6
                              op      op/s
 160 bit ecdh (secp160r1)   0.0025s    397.3
 192 bit ecdh (nistp192)   0.0035s    287.1
 224 bit ecdh (nistp224)   0.0047s    213.4
 256 bit ecdh (nistp256)   0.0061s    164.8
 384 bit ecdh (nistp384)   0.0148s     67.7
 521 bit ecdh (nistp521)   0.0333s     30.1
 163 bit ecdh (nistk163)   0.0045s    219.8
 233 bit ecdh (nistk233)   0.0084s    119.3
 283 bit ecdh (nistk283)   0.0154s     65.0
 409 bit ecdh (nistk409)   0.0332s     30.1
 571 bit ecdh (nistk571)   0.0778s     12.8
 163 bit ecdh (nistb163)   0.0049s    205.4
 233 bit ecdh (nistb233)   0.0092s    108.9
 283 bit ecdh (nistb283)   0.0171s     58.5
 409 bit ecdh (nistb409)   0.0379s     26.4
 571 bit ecdh (nistb571)   0.0895s     11.2

Utilite

BYTEmark* Native Mode Benchmark ver. 2 (10/95)
Index-split by Andrew D. Balsa (11/97)
Linux/Unix* port by Uwe F. Mayer (12/96,11/97)

TEST                : Iterations/sec.  : Old Index   : New Index
                    :                  : Pentium 90* : AMD K6/233*
--------------------:------------------:-------------:------------
NUMERIC SORT        :          334.63  :       8.58  :       2.82
STRING SORT         :          51.165  :      22.86  :       3.54
BITFIELD            :      1.2678e+08  :      21.75  :       4.54
FP EMULATION        :          52.454  :      25.17  :       5.81
FOURIER             :          4589.4  :       5.22  :       2.93
ASSIGNMENT          :          5.7939  :      22.05  :       5.72
IDEA                :            1315  :      20.11  :       5.97
HUFFMAN             :          668.33  :      18.53  :       5.92
NEURAL NET          :          6.2869  :      10.10  :       4.25
LU DECOMPOSITION    :          209.07  :      10.83  :       7.82
==========================ORIGINAL BYTEMARK RESULTS==========================
INTEGER INDEX       : 18.965
FLOATING-POINT INDEX: 8.296
Baseline (MSDOS*)   : Pentium* 90, 256 KB L2-cache, Watcom* compiler 10.0
==============================LINUX DATA BELOW===============================
CPU                 : 4 CPU ARMv7 Processor rev 10 (v7l)
L2 Cache            : 
OS                  : Linux 3.13.0-45-generic
C compiler          : gcc version 4.8.2 (Ubuntu/Linaro 4.8.2-19ubuntu1) 
libc                : libc-2.19.so
MEMORY INDEX        : 4.513
INTEGER INDEX       : 4.904
FLOATING-POINT INDEX: 4.601
Baseline (LINUX)    : AMD K6/233*, 512 KB L2-cache, gcc 2.7.2.3, libc-5.4.38
* Trademarks are property of their respective holder.

Version  1.97       ------Sequential Output------ --Sequential Input- --Random-
Concurrency   1     -Per Chr- --Block-- -Rewrite- -Per Chr- --Block-- --Seeks--
Machine        Size K/sec %CP K/sec %CP K/sec %CP K/sec %CP K/sec %CP  /sec %CP
clamps           4G    96  99 48214  41 38833  57   484  99 125954  97  3218 304
Latency             93438us    2073ms     831ms   38317us    5599us   11133us
Version  1.97       ------Sequential Create------ --------Random Create--------
clamps              -Create-- --Read--- -Delete-- -Create-- --Read--- -Delete--
              files  /sec %CP  /sec %CP  /sec %CP  /sec %CP  /sec %CP  /sec %CP
                 16  8359  91 +++++ +++ 12668  89  9318  92 +++++ +++ 11547  92
Latency              7211us    2315us    3450us    2208us      42us    2775us
1.97,1.97,clamps,1,1424586890,4G,,96,99,48214,41,38833,57,484,99,125954,97,3218,304,16,,,,,8359,91,+++++,+++,12668,89,9318,92,+++++,+++,11547,92,93438us,2073ms,831ms,38317us,5599us,11133us,7211us,2315us,3450us,2208us,42us,2775us

OpenSSL 1.0.1f 6 Jan 2014
built on: Fri Jan  9 18:00:48 UTC 2015
options:bn(64,32) rc4(ptr,char) des(idx,cisc,16,long) aes(partial) blowfish(ptr) 
compiler: cc -fPIC -DOPENSSL_PIC -DOPENSSL_THREADS -D_REENTRANT -DDSO_DLFCN -DHAVE_DLFCN_H -DL_ENDIAN -DTERMIO -g -O2 -fstack-protector --param=ssp-buffer-size=4 -Wformat -Werror=format-security
 -D_FORTIFY_SOURCE=2 -Wl,-Bsymbolic-functions -Wl,-z,relro -Wa,--noexecstack -Wall -DOPENSSL_BN_ASM_MONT -DOPENSSL_BN_ASM_GF2m -DSHA1_ASM -DSHA256_ASM -DSHA512_ASM -DAES_ASM -DGHASH_ASM
The 'numbers' are in 1000s of bytes per second processed.
type             16 bytes     64 bytes    256 bytes   1024 bytes   8192 bytes
md2                  0.00         0.00         0.00         0.00         0.00 
mdc2                 0.00         0.00         0.00         0.00         0.00 
md4               8241.83k    26442.64k    68072.19k   110937.69k   137616.85k
md5               6614.97k    20734.38k    50776.42k    80632.53k    96689.61k
hmac(md5)         6211.28k    19780.36k    50121.04k    80594.27k    97447.04k
sha1              6224.03k    17443.40k    36604.73k    51314.10k    57698.09k
rmd160            5281.47k    14105.00k    28500.52k    38167.31k    42205.18k
rc4              47155.17k    53723.78k    56523.76k    57421.26k    57431.15k
des cbc          12163.80k    12749.62k    13012.00k    13033.06k    12996.98k
des ede3          4672.83k     4775.56k     4796.24k     4800.45k     4824.83k
idea cbc             0.00         0.00         0.00         0.00         0.00 
seed cbc         15433.24k    16347.68k    16366.75k    16512.74k    16525.96k
rc2 cbc           9267.11k     9746.40k     9817.27k     9917.86k     9891.40k
rc5-32/12 cbc        0.00         0.00         0.00         0.00         0.00 
blowfish cbc     20327.67k    22173.27k    22814.70k    22972.48k    22843.30k
cast cbc         18834.93k    20428.78k    20931.76k    21110.43k    21150.52k
aes-128 cbc      25165.48k    26673.46k    27322.31k    27435.49k    27447.67k
aes-192 cbc      21798.22k    23635.20k    24230.21k    24392.99k    24442.37k
aes-256 cbc      19373.50k    20436.75k    20813.25k    20986.47k    20941.73k
camellia-128 cbc    18807.92k    20145.04k    20569.41k    20652.12k    20675.33k
camellia-192 cbc    15084.09k    15862.17k    16229.40k    16244.03k    16280.12k
camellia-256 cbc    15055.23k    15930.37k    16118.34k    16298.73k    16319.86k
sha256            6813.70k    15169.79k    26092.42k    31481.10k    33762.12k
sha512            3204.16k    12776.06k    18733.28k    25803.70k    28988.92k
whirlpool          692.55k     1408.34k     2275.29k     2687.46k     2845.34k
aes-128 ige      24451.80k    26496.75k    27079.17k    27450.12k    27408.34k
aes-192 ige      21368.84k    22686.98k    23424.82k    23525.57k    23473.80k
aes-256 ige      18886.16k    20038.38k    20458.26k    20566.79k    20646.17k
ghash            32450.51k    35398.26k    36421.72k    36791.07k    36908.85k
                  sign    verify    sign/s verify/s
rsa  512 bits 0.001124s 0.000105s    890.0   9550.8
rsa 1024 bits 0.006208s 0.000346s    161.1   2890.8
rsa 2048 bits 0.041946s 0.001267s     23.8    789.1
rsa 4096 bits 0.302581s 0.004887s      3.3    204.6
                  sign    verify    sign/s verify/s
dsa  512 bits 0.001130s 0.001199s    885.3    833.9
dsa 1024 bits 0.003470s 0.004028s    288.2    248.3
dsa 2048 bits 0.012430s 0.014396s     80.4     69.5
                              sign    verify    sign/s verify/s
 160 bit ecdsa (secp160r1)   0.0007s   0.0026s   1426.5    392.1
 192 bit ecdsa (nistp192)   0.0009s   0.0036s   1103.3    280.3
 224 bit ecdsa (nistp224)   0.0012s   0.0053s    815.7    188.5
 256 bit ecdsa (nistp256)   0.0014s   0.0062s    699.6    161.1
 384 bit ecdsa (nistp384)   0.0033s   0.0163s    304.3     61.4
 521 bit ecdsa (nistp521)   0.0067s   0.0362s    150.0     27.6
 163 bit ecdsa (nistk163)   0.0024s   0.0075s    412.9    132.7
 233 bit ecdsa (nistk233)   0.0050s   0.0137s    201.9     73.2
 283 bit ecdsa (nistk283)   0.0076s   0.0257s    131.1     39.0
 409 bit ecdsa (nistk409)   0.0196s   0.0559s     50.9     17.9
 571 bit ecdsa (nistk571)   0.0511s   0.1296s     19.6      7.7
 163 bit ecdsa (nistb163)   0.0024s   0.0081s    418.2    122.8
 233 bit ecdsa (nistb233)   0.0049s   0.0149s    205.1     67.0
 283 bit ecdsa (nistb283)   0.0076s   0.0286s    131.2     35.0
 409 bit ecdsa (nistb409)   0.0196s   0.0628s     51.1     15.9
 571 bit ecdsa (nistb571)   0.0511s   0.1464s     19.6      6.8
                              op      op/s
 160 bit ecdh (secp160r1)   0.0021s    468.1
 192 bit ecdh (nistp192)   0.0030s    335.2
 224 bit ecdh (nistp224)   0.0044s    226.0
 256 bit ecdh (nistp256)   0.0051s    195.0
 384 bit ecdh (nistp384)   0.0138s     72.7
 521 bit ecdh (nistp521)   0.0301s     33.2
 163 bit ecdh (nistk163)   0.0037s    270.9
 233 bit ecdh (nistk233)   0.0067s    150.1
 283 bit ecdh (nistk283)   0.0127s     78.9
 409 bit ecdh (nistk409)   0.0275s     36.4
 571 bit ecdh (nistk571)   0.0638s     15.7
 163 bit ecdh (nistb163)   0.0040s    250.7
 233 bit ecdh (nistb233)   0.0073s    136.3
 283 bit ecdh (nistb283)   0.0139s     71.9
 409 bit ecdh (nistb409)   0.0311s     32.1
 571 bit ecdh (nistb571)   0.0719s     13.9

i5-4690K

BYTEmark* Native Mode Benchmark ver. 2 (10/95)
Index-split by Andrew D. Balsa (11/97)
Linux/Unix* port by Uwe F. Mayer (12/96,11/97)

TEST                : Iterations/sec.  : Old Index   : New Index
                    :                  : Pentium 90* : AMD K6/233*
--------------------:------------------:-------------:------------
NUMERIC SORT        :          2385.1  :      61.17  :      20.09
STRING SORT         :          1345.8  :     601.32  :      93.07
BITFIELD            :      7.4081e+08  :     127.07  :      26.54
FP EMULATION        :           795.9  :     381.91  :      88.13
FOURIER             :           58268  :      66.27  :      37.22
ASSIGNMENT          :          78.017  :     296.87  :      77.00
IDEA                :           15059  :     230.33  :      68.39
HUFFMAN             :          6721.5  :     186.39  :      59.52
NEURAL NET          :          136.68  :     219.57  :      92.36
LU DECOMPOSITION    :          3702.2  :     191.79  :     138.49
==========================ORIGINAL BYTEMARK RESULTS==========================
INTEGER INDEX       : 217.125
FLOATING-POINT INDEX: 140.782
Baseline (MSDOS*)   : Pentium* 90, 256 KB L2-cache, Watcom* compiler 10.0
==============================LINUX DATA BELOW===============================
CPU                 : 4 CPU GenuineIntel Intel(R) Core(TM) i5-4690K CPU @ 3.50GHz 3501MHz
L2 Cache            : 6144 KB
OS                  : Linux 3.13.0-45-generic
C compiler          : gcc version 4.8.2 (Ubuntu 4.8.2-19ubuntu1) 
libc                : libc-2.19.so
MEMORY INDEX        : 57.512
INTEGER INDEX       : 51.811
FLOATING-POINT INDEX: 78.084
Baseline (LINUX)    : AMD K6/233*, 512 KB L2-cache, gcc 2.7.2.3, libc-5.4.38
* Trademarks are property of their respective holder.

Version  1.97       ------Sequential Output------ --Sequential Input- --Random-
Concurrency   1     -Per Chr- --Block-- -Rewrite- -Per Chr- --Block-- --Seeks--
Machine        Size K/sec %CP K/sec %CP K/sec %CP K/sec %CP K/sec %CP  /sec %CP
nibbler      63744M  2717  88 62762   5 96251   3 +++++ +++ 284914   5 444.5   6
Latency             52062us    2482ms   14652ms   36641us   99483us     370ms
Version  1.97       ------Sequential Create------ --------Random Create--------
nibbler             -Create-- --Read--- -Delete-- -Create-- --Read--- -Delete--
              files  /sec %CP  /sec %CP  /sec %CP  /sec %CP  /sec %CP  /sec %CP
                 16  7648   5 +++++ +++  3568   3  2250   5 +++++ +++   628   0
Latency               186ms      81us     386ms     228ms      11us    2314ms
1.97,1.97,nibbler,1,1424568780,63744M,,2717,88,62762,5,96251,3,+++++,+++,284914,5,444.5,6,16,,,,,7648,5,+++++,+++,3568,3,2250,5,+++++,+++,628,0,52062us,2482ms,14652ms,36641us,99483us,370ms,186ms,81us,386ms,228ms,11us,2314ms

OpenSSL 1.0.1f 6 Jan 2014
built on: Fri Jan  9 17:52:48 UTC 2015
options:bn(64,64) rc4(16x,int) des(idx,cisc,16,int) aes(partial) blowfish(idx) 
compiler: cc -fPIC -DOPENSSL_PIC -DOPENSSL_THREADS -D_REENTRANT -DDSO_DLFCN -DHAVE_DLFCN_H -m64 -DL_ENDIAN -DTERMIO -g -O2 -fstack-protector --param=ssp-buffer-size=4 -Wformat -Werror=format-security -D_FORTIFY_SOURCE=2 -Wl,-Bsymbolic-functions -Wl,-z,relro -Wa,--noexecstack -Wall -DMD32_REG_T=int -DOPENSSL_IA32_SSE2 -DOPENSSL_BN_ASM_MONT -DOPENSSL_BN_ASM_MONT5 -DOPENSSL_BN_ASM_GF2m -DSHA1_ASM -DSHA256_ASM -DSHA512_ASM -DMD5_ASM -DAES_ASM -DVPAES_ASM -DBSAES_ASM -DWHIRLPOOL_ASM -DGHASH_ASM
The 'numbers' are in 1000s of bytes per second processed.
type             16 bytes     64 bytes    256 bytes   1024 bytes   8192 bytes
md2                  0.00         0.00         0.00         0.00         0.00 
mdc2                 0.00         0.00         0.00         0.00         0.00 
md4             106719.16k   322994.60k   737961.39k  1105796.37k  1289319.77k
md5              74058.79k   213987.90k   470995.74k   670637.40k   767888.04k
hmac(md5)        63472.70k   190996.20k   442288.12k   656018.77k   766369.79k
sha1             86987.60k   239977.86k   509936.55k   741900.97k   902851.55k
rmd160           50582.59k   120868.69k   218979.15k   273907.03k   295291.56k
rc4             439214.15k   793583.10k   931643.08k   959178.75k   965929.64k
des cbc          82232.33k    85451.92k    85785.86k    85917.01k    86350.26k
des ede3         31638.78k    32192.49k    32414.31k    32370.01k    32385.71k
idea cbc             0.00         0.00         0.00         0.00         0.00 
seed cbc         85378.73k    86113.46k    85957.63k    85827.58k    86218.75k
rc2 cbc          52713.13k    53636.61k    53993.22k    54268.92k    54160.04k
rc5-32/12 cbc        0.00         0.00         0.00         0.00         0.00 
blowfish cbc    132890.61k   140962.25k   142400.85k   143064.75k   143606.58k
cast cbc        123477.80k   131612.07k   133600.00k   134423.46k   134250.50k
aes-128 cbc     155945.39k   170214.83k   173895.42k   175899.91k   175699.29k
aes-192 cbc     131270.06k   142201.22k   144801.02k   146176.86k   146210.82k
aes-256 cbc     113957.72k   122551.72k   124043.69k   124509.53k   124903.42k
camellia-128 cbc   116319.99k   179128.77k   204550.83k   211808.60k   214896.16k
camellia-192 cbc   100422.48k   140049.42k   154080.68k   158968.15k   161086.50k
camellia-256 cbc    97688.27k   138615.62k   153032.19k   159233.03k   160516.78k
sha256           61247.67k   136223.06k   235369.64k   291570.01k   307383.57k
sha512           49566.23k   198618.43k   307382.45k   431647.74k   475592.02k
whirlpool        32330.11k    68737.35k   113109.50k   135009.28k   143833.99k
aes-128 ige     157819.94k   164321.30k   165555.97k   166157.53k   166488.75k
aes-192 ige     134085.14k   138452.57k   139268.27k   139497.57k   139569.83k
aes-256 ige     115722.84k   119265.58k   120394.66k   119833.26k   120444.25k
ghash          1555713.02k  3315741.80k  3619220.55k  3641529.34k  3646270.12k
                  sign    verify    sign/s verify/s
rsa  512 bits 0.000038s 0.000003s  26399.4 303787.7
rsa 1024 bits 0.000126s 0.000009s   7913.9 114074.5
rsa 2048 bits 0.000956s 0.000029s   1046.3  34247.7
rsa 4096 bits 0.006810s 0.000108s    146.8   9296.6
                  sign    verify    sign/s verify/s
dsa  512 bits 0.000040s 0.000037s  25145.5  27289.8
dsa 1024 bits 0.000092s 0.000101s  10874.2   9864.7
dsa 2048 bits 0.000286s 0.000335s   3491.0   2984.4
                              sign    verify    sign/s verify/s
 160 bit ecdsa (secp160r1)   0.0000s   0.0002s  20603.9   5858.8
 192 bit ecdsa (nistp192)   0.0001s   0.0002s  17141.2   4853.3
 224 bit ecdsa (nistp224)   0.0001s   0.0001s  16441.4   7415.1
 256 bit ecdsa (nistp256)   0.0001s   0.0002s  10583.9   4329.6
 384 bit ecdsa (nistp384)   0.0002s   0.0007s   6151.7   1471.3
 521 bit ecdsa (nistp521)   0.0004s   0.0009s   2664.9   1151.5
 163 bit ecdsa (nistk163)   0.0001s   0.0003s   7021.2   2944.9
 233 bit ecdsa (nistk233)   0.0003s   0.0004s   3571.8   2255.8
 283 bit ecdsa (nistk283)   0.0004s   0.0008s   2352.1   1230.7
 409 bit ecdsa (nistk409)   0.0010s   0.0013s   1029.0    759.2
 571 bit ecdsa (nistk571)   0.0021s   0.0031s    477.4    318.9
 163 bit ecdsa (nistb163)   0.0001s   0.0004s   7056.1   2785.4
 233 bit ecdsa (nistb233)   0.0003s   0.0005s   3609.1   2114.1
 283 bit ecdsa (nistb283)   0.0004s   0.0009s   2340.8   1156.8
 409 bit ecdsa (nistb409)   0.0010s   0.0014s   1024.7    716.2
 571 bit ecdsa (nistb571)   0.0021s   0.0034s    477.6    294.6
                              op      op/s
 160 bit ecdh (secp160r1)   0.0001s   7288.2
 192 bit ecdh (nistp192)   0.0002s   6045.6
 224 bit ecdh (nistp224)   0.0001s  10659.0
 256 bit ecdh (nistp256)   0.0002s   5927.2
 384 bit ecdh (nistp384)   0.0006s   1779.3
 521 bit ecdh (nistp521)   0.0006s   1610.1
 163 bit ecdh (nistk163)   0.0002s   6214.0
 233 bit ecdh (nistk233)   0.0002s   4779.5
 283 bit ecdh (nistk283)   0.0004s   2560.5
 409 bit ecdh (nistk409)   0.0006s   1597.7
 571 bit ecdh (nistk571)   0.0015s    657.1
 163 bit ecdh (nistb163)   0.0002s   5777.9
 233 bit ecdh (nistb233)   0.0002s   4529.4
 283 bit ecdh (nistb283)   0.0004s   2395.6
 409 bit ecdh (nistb409)   0.0007s   1479.1
 571 bit ecdh (nistb571)   0.0017s    599.0

Read more
facundo

Cantando juntos


"Vení, cantemos algo a dúo."

Cantando a dúo

¡Rocanrol!

Read more
Joseph Salisbury

Meeting Minutes

IRC Log of the meeting.

Meeting minutes.

Agenda

20150217 Meeting Agenda


Release Metrics and Incoming Bugs

Release metrics and incoming bug data can be reviewed at the following link:

  • http://people.canonical.com/~kernel/reports/kt-meeting.txt


Status: Vivid Development Kernel

We are in the process of rebasing our Vivid kernel to v3.18.7 upstream
stable. We’ll try to get it uploaded today. We would also like to push
the v3.19 based kernel we have up to the archive asap. We are still
cleaning up some remaining DKMS drivers before we do. For anyone
interested in getting an early preview, we have a v3.19 based kernel
available for testing in our ckt PPA.
—–
Important upcoming dates:
Thurs Feb 19 – 14.04.2 Point Release (~2 days away, yes this was
delayed)
Thurs Feb 26 – Beta 1 Freeze (~1 weeks away)
Thurs Mar 26 – Fina l Beta (~5 weeks away)
Thurs Apr 09 – Kernel Freeze (~7 weeks away)


Status: CVE’s

The current CVE status can be reviewed at the following link:

  • http://people.canonical.com/~kernel/cve/pkg/ALL-linux.html


Status: Stable, Security, and Bugfix Kernel Updates – Utopic/Trusty/Precise/Lucid

Status for the main kernels, until today:

  • Lucid – Verification
  • Precise – Verification
  • Trusty – Verification
  • Utopic – Verification

    Current opened tracking bugs details:

  • http://kernel.ubuntu.com/sru/kernel-sru-workflow.html

    For SRUs, SRU report is a good source of information:

  • http://kernel.ubuntu.com/sru/sru-report.html

    Schedule:

    Current cycle had ended. Waiting for next cycle to start on Feb. 08.

    cycle: 06-Feb through 28-Feb
    ====================================================================
    06-Feb Last day for kernel commits for this cycle
    08-Feb – 14-Feb Kernel prep week.
    15-Feb – 28-Feb Bug verification; Regression testing; Release


Open Discussion or Questions? Raise your hand to be recognized

No open discussions.

Read more
Greg Lutostanski

Server team meeting minutes: 2015-2-10

Agenda

  • Review ACTION points from previous meeting
  • V Development
  • Server & Cloud Bugs (caribou)
  • Weekly Updates & Questions for the QA Team (psivaa)
  • Weekly Updates & Questions for the Kernel Team (smb, sforshee, arges)
  • Ubuntu Server Team Events
  • Open Discussion
  • Announce next meeting date, time and chair
  • Minutes

    Meeting Actions

    None

    V Development

    Feb 19th is feature freeze and debian import freeze.
    Progress on OpenStack Kilo features seems to be progressing well

    Server & Cloud Bugs

    None

    Ubuntu Server Team Events

    ODS is coming up

    Open Discussion
    Agree on next meeting date and time

    Next meeting will be on Tuesday, Feb 17th at 16:00 UTC in #ubuntu-meeting. arosales will chair.

    IRC Log
    https://wiki.ubuntu.com/MeetingLogs/Server/20150210

    Read more
    Ryan Finnie

    Download the lastest Ubuntu 14.04 Raspberry Pi 2 image

    If you downloaded an older image than the current one, you shouldn't need to reinstall, but be sure to review the changelog in the link above.

    Note that this blog post originally contained a bunch more information, which has been moved to a dedicated page on wiki.ubuntu.com.

    I've closed comments on this blog post. If you are looking for help, please see this post on the raspberrypi.org forums. If you post there, you'll be reaching a wider audience of people (including myself) who can help you. Thanks for all of your comments!


    After my last post, I went and ported Sjoerd's Raspberry Pi 2 Debian kernel patchset to Ubuntu's kernel package base (specifically 3.18.0-14.15). The result is an RPi2-compatible 3.18.7-based kernel which not only installs in Ubuntu, but has all the Ubuntu bells and whistles. I also re-ported flash-kernel based on Ubuntu's package, recompiled raspberrypi-firmware-nokernel, created a linux-meta-rpi2 package, and put it all in a PPA.

    With that all done, I decided to go ahead and produce a base Ubuntu trusty image. It's 1.75GB uncompressed so you can put it on a 2GB or larger MicroSD card, and includes a full ubuntu-standard setup. Also included in the zip is a .bmap file; if you are writing the image in Linux you can use bmap-tools package to write only the non-zero bytes, saving some time. Otherwise it's the same procedure as other Raspberry Pi images.

    (PS: If this image becomes popular, I should point out ahead of time: This is an unofficial image and is in no way endorsed by my employer, who happens to be the company who produces Ubuntu. This is a purely personal undertaking.)

    Read more