おがさわらなるひこのオープンソースとかプログラミングとか印刷技術とか

おがさわらなるひこ @naru0ga が技術系で興味を持ったりなんだりしたことをたまーに書くブログです。最近はてなダイアリー放置しすぎて記事書くたびにはてな記法忘れるのではてなブログに移行しました。

クリエイティブ・コモンズ・ライセンス
特に断りがない場合は、本ブログの筆者によるコンテンツは クリエイティブ・コモンズ 表示 - 継承 4.0 国際 ライセンスの下に提供されています。

SoftLayerでベアメタルインスタンスを借りてLibreOfficeをビルドしてみたよ

小ネタ。

IBM印のクラウドサービスであるSoftLayerは仮想化によるインスタンスだけでなくベアメタルサーバーをダッシュボード上ぽちぽちで借りられることで有名ですが、今まではひと月ごとの貸出だったのでシャレで借りるにはちょっと高いなって思って距離置いて見てました。

でもなんか、ある日突然、時間単位課金が可能になってるじゃないですか。超びっくり。これは試すしかない!
最初は一番格安な2coreあたりを借りようと思ったんですが、とりあえずいっちゃん高いのってどれぐらいなんやろって思ってえいっと16core 64GBメモリを選んで価格を見てみたら、時間あたり$1.2ちょっと。ペットボトル1本分? じゃあシャレで借りてみるか、破産するほどじゃないだろ、ってことで借りてみました。

ベアメタルサーバーの振り出しは早ければ30分と言われてますが、ぼくの場合、たぶん高い奴を選んだからなのでしょう、申し込みしてからacceptに1時間ぐらいかかり、課金しますよって連絡にそれから2時間、さらにプロビジョニング終了って言われたのがさらに1時間後ぐらいなので、結構かかってますね。

借りてなにをやるかというと、LibreOfficeのビルドをベンチするに決まっていますw

とりあえず /proc/cpuinfo と /proc/meminfo 貼っておきます。

$ cat /proc/cpuinfo 
processor       : 0
vendor_id       : GenuineIntel
cpu family      : 6
model           : 62
model name      : Intel(R) Xeon(R) CPU E5-2650 v2 @ 2.60GHz
stepping        : 4
microcode       : 0x416
cpu MHz         : 2600.052
cache size      : 20480 KB
physical id     : 0
siblings        : 16
core id         : 0
cpu cores       : 8
apicid          : 0
initial apicid  : 0
fpu             : yes
fpu_exception   : yes
cpuid level     : 13
wp              : yes
flags           : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe syscall nx pdpe1gb rdtscp lm constant_tsc arch_perfmon pebs bts rep_good nopl xtopology nonstop_tsc aperfmperf eagerfpu pni pclmulqdq dtes64 monitor ds_cpl vmx smx est tm2 ssse3 cx16 xtpr pdcm pcid dca sse4_1 sse4_2 x2apic popcnt tsc_deadline_timer aes xsave avx f16c rdrand lahf_lm arat epb xsaveopt pln pts dtherm tpr_shadow vnmi flexpriority ept vpid fsgsbase smep erms
bogomips        : 5200.10
clflush size    : 64
cache_alignment : 64
address sizes   : 46 bits physical, 48 bits virtual
power management:

processor       : 1
vendor_id       : GenuineIntel
cpu family      : 6
model           : 62
model name      : Intel(R) Xeon(R) CPU E5-2650 v2 @ 2.60GHz
stepping        : 4
microcode       : 0x416
cpu MHz         : 2600.052
cache size      : 20480 KB
physical id     : 0
siblings        : 16
core id         : 1
cpu cores       : 8
apicid          : 2
initial apicid  : 2
fpu             : yes
fpu_exception   : yes
cpuid level     : 13
wp              : yes
flags           : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe syscall nx pdpe1gb rdtscp lm constant_tsc arch_perfmon pebs bts rep_good nopl xtopology nonstop_tsc aperfmperf eagerfpu pni pclmulqdq dtes64 monitor ds_cpl vmx smx est tm2 ssse3 cx16 xtpr pdcm pcid dca sse4_1 sse4_2 x2apic popcnt tsc_deadline_timer aes xsave avx f16c rdrand lahf_lm arat epb xsaveopt pln pts dtherm tpr_shadow vnmi flexpriority ept vpid fsgsbase smep erms
bogomips        : 5200.10
clflush size    : 64
cache_alignment : 64
address sizes   : 46 bits physical, 48 bits virtual
power management:

processor       : 2
vendor_id       : GenuineIntel
cpu family      : 6
model           : 62
model name      : Intel(R) Xeon(R) CPU E5-2650 v2 @ 2.60GHz
stepping        : 4
microcode       : 0x416
cpu MHz         : 2600.052
cache size      : 20480 KB
physical id     : 0
siblings        : 16
core id         : 2
cpu cores       : 8
apicid          : 4
initial apicid  : 4
fpu             : yes
fpu_exception   : yes
cpuid level     : 13
wp              : yes
flags           : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe syscall nx pdpe1gb rdtscp lm constant_tsc arch_perfmon pebs bts rep_good nopl xtopology nonstop_tsc aperfmperf eagerfpu pni pclmulqdq dtes64 monitor ds_cpl vmx smx est tm2 ssse3 cx16 xtpr pdcm pcid dca sse4_1 sse4_2 x2apic popcnt tsc_deadline_timer aes xsave avx f16c rdrand lahf_lm arat epb xsaveopt pln pts dtherm tpr_shadow vnmi flexpriority ept vpid fsgsbase smep erms
bogomips        : 5200.10
clflush size    : 64
cache_alignment : 64
address sizes   : 46 bits physical, 48 bits virtual
power management:

(中略)

processor       : 15
vendor_id       : GenuineIntel
cpu family      : 6
model           : 62
model name      : Intel(R) Xeon(R) CPU E5-2650 v2 @ 2.60GHz
stepping        : 4
microcode       : 0x416
cpu MHz         : 2600.052
cache size      : 20480 KB
physical id     : 0
siblings        : 16
core id         : 7
cpu cores       : 8
apicid          : 15
initial apicid  : 15
fpu             : yes
fpu_exception   : yes
cpuid level     : 13
wp              : yes
flags           : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe syscall nx pdpe1gb rdtscp lm constant_tsc arch_perfmon pebs bts rep_good nopl xtopology nonstop_tsc aperfmperf eagerfpu pni pclmulqdq dtes64 monitor ds_cpl vmx smx est tm2 ssse3 cx16 xtpr pdcm pcid dca sse4_1 sse4_2 x2apic popcnt tsc_deadline_timer aes xsave avx f16c rdrand lahf_lm arat epb xsaveopt pln pts dtherm tpr_shadow vnmi flexpriority ept vpid fsgsbase smep erms
bogomips        : 5200.10
clflush size    : 64
cache_alignment : 64
address sizes   : 46 bits physical, 48 bits virtual
power management:
$ cat /proc/meminfo 
MemTotal:       65942284 kB
MemFree:        47738556 kB
Buffers:          602552 kB
Cached:         15199592 kB
SwapCached:            0 kB
Active:         12728520 kB
Inactive:        3615036 kB
Active(anon):     544096 kB
Inactive(anon):      540 kB
Active(file):   12184424 kB
Inactive(file):  3614496 kB
Unevictable:        3708 kB
Mlocked:            3708 kB
SwapTotal:        999420 kB
SwapFree:         999420 kB
Dirty:             36740 kB
Writeback:           176 kB
AnonPages:        545164 kB
Mapped:             9476 kB
Shmem:               744 kB
Slab:            1394684 kB
SReclaimable:    1319144 kB
SUnreclaim:        75540 kB
KernelStack:        1656 kB
PageTables:         3644 kB
NFS_Unstable:          0 kB
Bounce:                0 kB
WritebackTmp:          0 kB
CommitLimit:    33970560 kB
Committed_AS:     613892 kB
VmallocTotal:   34359738367 kB
VmallocUsed:      376288 kB
VmallocChunk:   34359354112 kB
HardwareCorrupted:     0 kB
AnonHugePages:    538624 kB
HugePages_Total:       0
HugePages_Free:        0
HugePages_Rsvd:        0
HugePages_Surp:        0
Hugepagesize:       2048 kB
DirectMap4k:       78800 kB
DirectMap2M:     3031040 kB
DirectMap1G:    66060288 kB

16コアなのでえらいことになってるな。途中省略しました。

あーついでに uname -a も。

Linux XXXXX 3.13.0-34-generic #60-Ubuntu SMP Wed Aug 13 15:45:27 UTC 2014 x86_64 x86_64 x86_64 GNU/Linux

で、LibreOfficeをさくっとビルドしましょう。まずはお約束:

# apt-get install build-essential git
# apt-get build-dep libreoffice

して、rootのままだとアレなので一般ユーザーにスイッチして、

$ git clone git://gerrit.libreoffice.org/core LibreOffice

してmasterを取ってくる。LibreOfficeにcdして、

$ ./autogen.sh --with-package-format="deb" --enable-epm --with-parallelism=16 --with-lang="ALL"

だ! 16コアでメモリもうんとこさ載ってるので、とーぜん--with-parallelism=16である。
おっと、gstreamerがなんとかいって怒られる。そういやmasterでは使ってるgstreamerのバージョンが違うかなんかだったな。ということで、

# apt-get install libgstreamer0.10-dev libgstreamer-plugins-base-0.10-dev

としてもっかいautogen叩くと、OK、Makefileができた。
あとは:

nohup time make &

して、そのままほっといた。
で、帰る途中にご飯食べてお家帰ってお風呂入ってから確認したら、正常にmakeは成功してるっぽい。
nohup.logの末尾はこんな感じ。

[build CUS] instsetoo_native/install
[build BIN] instsetoo_native
[build MOD] instsetoo_native
[build MOD] libreoffice
[build BIN] top level modules: libreoffice
[build BIN] loaded modules: UnoControls accessibility accessories android animations apache-commons apple_remote avmedia basctl basebmp basegfx basic bean beanshell binaryurp boost bridges canvas chart2 cli_ure clucene codemaker coinmp collada2gltf comphelper configmgr connectivity cppcanvas cppu cppuhelper cppunit cpputools cui curl dbaccess desktop drawinglayer dtrans editeng embeddedobj embedserv epm eventattacher expat extensions external extras filter firebird forms formula fpicker framework glew glm graphite harfbuzz helpcompiler hsqldb hunspell hwpfilter hyphen i18nlangtag i18npool i18nutil icu idl idlc instsetoo_native io javaunohelper jfreereport jurt jvmaccess jvmfwk l10ntools lcms2 libabw libcdr libcmis libebook libetonyek libexttextcat libfreehand libgltf liblangtag libmspub libmwaw libodfgen liborcus libpagemaker libpng librelogo libreoffice libreofficekit librevenge libvisio libwpd libwpg libwps libxmlsec lingucomponent linguistic lotuswordpro lpsolve mdds more_fonts mythes neon np_sdk nss o3tl odk offapi officecfg oovbaapi oox opencollada openldap openssl package poppler postgresql postprocess pyuno qadevOOo readlicense_oo redland registry remotebridges reportbuilder reportdesign rhino ridljar rsc sal salhelper sax sc scaddins sccomp scp2 scripting sd sdext setup_native sfx2 shell slideshow smoketest solenv soltools sot starmath stoc store svgio svl svtools svx sw swext sysui test testtools toolkit tools touch tubes ucb ucbhelper ucpp udkapi unodevtools unoidl unoil unotest unotools unoxml ure uui vbahelper vcl vigra winaccessibility wizards writerfilter writerperfect xmerge xmlhelp xmloff xmlreader xmlscript xmlsecurity
[build ALL] top level modules: build-non-l10n-only build-l10n-only
[build ALL] loaded modules: UnoControls accessibility accessories android animations apache-commons apple_remote avmedia basctl basebmp basegfx basic bean beanshell binaryurp boost bridges canvas chart2 cli_ure clucene codemaker coinmp collada2gltf comphelper configmgr connectivity cppcanvas cppu cppuhelper cppunit cpputools cui curl dbaccess desktop drawinglayer dtrans editeng embeddedobj embedserv epm eventattacher expat extensions external extras filter firebird forms formula fpicker framework glew glm graphite harfbuzz helpcompiler hsqldb hunspell hwpfilter hyphen i18nlangtag i18npool i18nutil icu idl idlc instsetoo_native io javaunohelper jfreereport jurt jvmaccess jvmfwk l10ntools lcms2 libabw libcdr libcmis libebook libetonyek libexttextcat libfreehand libgltf liblangtag libmspub libmwaw libodfgen liborcus libpagemaker libpng librelogo libreoffice libreofficekit librevenge libvisio libwpd libwpg libwps libxmlsec lingucomponent linguistic lotuswordpro lpsolve mdds more_fonts mythes neon np_sdk nss o3tl odk offapi officecfg oovbaapi oox opencollada openldap openssl package poppler postgresql postprocess pyuno qadevOOo readlicense_oo redland registry remotebridges reportbuilder reportdesign rhino ridljar rsc sal salhelper sax sc scaddins sccomp scp2 scripting sd sdext setup_native sfx2 shell slideshow smoketest solenv soltools sot starmath stoc store svgio svl svtools svx sw swext sysui test testtools toolkit tools touch tubes ucb ucbhelper ucpp udkapi unodevtools unoidl unoil unotest unotools unoxml ure uui vbahelper vcl vigra winaccessibility wizards writerfilter writerperfect xmerge xmlhelp xmloff xmlreader xmlscript xmlsecurity
50434.17user 2769.59system 1:20:07elapsed 1106%CPU (0avgtext+0avgdata 887460maxresident)k
42904inputs+66557720outputs (299major+781442922minor)pagefaults 0swaps

まあビルドログはいいとして、ビルド時間は1:20:07ってこと?
Linux力弱いんで読み違いならすみません。まあ、そこそこ早いかなって思います。

とっととサーバー落とさないとお小遣い減っちゃうのでこんなとこで。小ネタで失礼しました。んじゃ!