Quad Core(4コア)のメリット

昨日は何とか「CuBox-i4Pro」に「Voyage Mubox」が組み込めました。
「CuBox-i4Pro」に組み込んだ「Voyage Mubox」・・・では長いので、以下、個人的には「Mubox-i4」と呼びます。

CuBox-i4Pro

雪は延々と降り続けています。(2月14日)
何とか状況が回復すれば昼からでも出勤しようと思っていたのですが、積雪はさらに増していくばかりです。そこで、11時過ぎにはそう言う悪あがきは諦めて、職場にもう一度電話をして夕方に予定していた会議はキャンセルしてもらい、今日はお休みと言うことにしました。
そんなわけで、ますます時間ができてしまったので、ネット上の情報をあれこれ探ってみました。

Quad Core(4コア)って言うけど、ホントに4つ動いているの?

ネット上の情報を探っていると、「CuBox-i4Pro」はQuad Core(4コア)って言うけど、音楽を再生するときにホントに4つ動いているの?という疑問が出されていました。
topコマンドで挙動を探るとCPUは一つしか動いていないように見えるというのです。

ほんまかいな?・・・と思って実際に確認してみました。

top – 01:45:46 up 14 min, 1 user, load average: 4.21, 3.88, 2.44
Tasks: 86 total, 1 running, 85 sleeping, 0 stopped, 0 zombie
%Cpu(s): 0.2 us, 0.1 sy, 0.0 ni, 99.5 id, 0.0 wa, 0.0 hi, 0.2 si, 0.0 st
KiB Mem: 1804684 total, 173416 used, 1631268 free, 1740 buffers
KiB Swap: 0 total, 0 used, 0 free, 82520 cached

なるほど、確かに見た目はCPUは一つしか動いていないように見えますね。でも、topコマンドは確かCPUの状態は一つにまとめて表示する仕様になっていたと思います。それをばらして個々に表示させるには数字の「1」を押さないといけません。
音楽を再生しながら、もう一度確認すると、

top – 01:58:02 up 26 min, 1 user, load average: 4.01, 4.01, 3.31
Tasks: 85 total, 1 running, 84 sleeping, 0 stopped, 0 zombie
%Cpu0 : 0.1 us, 0.0 sy, 0.0 ni, 99.9 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
%Cpu1 : 0.0 us, 0.0 sy, 0.0 ni,100.0 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
%Cpu2 : 0.1 us, 0.2 sy, 0.0 ni, 99.7 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
%Cpu3 : 0.0 us, 0.0 sy, 0.0 ni,100.0 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
KiB Mem: 1804684 total, 177388 used, 1627296 free, 1740 buffers
KiB Swap: 0 total, 0 used, 0 free, 86360 cached

top – 01:59:05 up 27 min, 1 user, load average: 4.00, 4.01, 3.35
Tasks: 85 total, 1 running, 84 sleeping, 0 stopped, 0 zombie
%Cpu0 : 0.0 us, 0.0 sy, 0.0 ni,100.0 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
%Cpu1 : 0.0 us, 0.0 sy, 0.0 ni,100.0 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
%Cpu2 : 0.6 us, 0.0 sy, 0.0 ni, 99.4 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
%Cpu3 : 0.0 us, 0.0 sy, 0.0 ni,100.0 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
KiB Mem: 1804684 total, 177388 used, 1627296 free, 1740 buffers
KiB Swap: 0 total, 0 used, 0 free, 86360 cached

top – 01:59:40 up 27 min, 1 user, load average: 4.35, 4.09, 3.40
Tasks: 85 total, 1 running, 84 sleeping, 0 stopped, 0 zombie
%Cpu0 : 1.2 us, 0.6 sy, 0.0 ni, 98.2 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
%Cpu1 : 0.9 us, 0.2 sy, 0.0 ni, 98.9 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
%Cpu2 : 0.2 us, 0.4 sy, 0.0 ni, 99.4 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
%Cpu3 : 0.0 us, 0.0 sy, 0.0 ni,100.0 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
KiB Mem: 1804684 total, 179008 used, 1625676 free, 1740 buffers
KiB Swap: 0 total, 0 used, 0 free, 88280 cached

Quad Core(4コア)って言うけど、ホントに4つ動いているの?
はい、間違いなく4つとも動いています。

Quad Core(4コア)のメリット

マルチコアというのは「遅くならない」のが最大のメリットだと言われています。特に複数のソフトを同時に起ち上げて作業させるときなどに最大の力を発揮します。それから、動画や音楽のエンコード、デコードなどにも力を発揮しますね。Quad Core(4コア)なら4つのファイルを同時に捌くことができますから実に有り難いです。
ただ、「Mubox-i4」のように音楽を再生させるだけのシステムの場合にはどのようなメリットがあるのでしょうか。

まず、思いつくのはDSD音源がスムーズに再生できることです。現状ではDSD音源をそのままネイティブな状態で再生することはできませんので、「Mubox-i4」などでは内部でDSDをPCMに変換させて再生しています。
この変換はかなりのパワーを必要とするので「Voyage MPD」時代の「alix3d2」だとパワー不足(CPU: 500 MHz AMD)で再生不可でした。そして、レガシーな「CuBox」になって何とか「可」という状態でした。
しかし、「Mubox-i4」だと非常に安定してDSD音源の再生ができるようです。

DSD音源を再生させてtopコマンドで挙動を探ってみるとこんな感じです。

top – 02:19:08 up 47 min, 1 user, load average: 4.27, 4.12, 3.89
Tasks: 86 total, 2 running, 84 sleeping, 0 stopped, 0 zombie
%Cpu0 : 55.1 us, 0.2 sy, 0.0 ni, 42.7 id, 0.0 wa, 0.0 hi, 1.9 si, 0.0 st
%Cpu1 : 0.0 us, 0.0 sy, 0.0 ni,100.0 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
%Cpu2 : 0.0 us, 0.0 sy, 0.0 ni,100.0 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
%Cpu3 : 0.2 us, 0.2 sy, 0.0 ni, 99.5 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
KiB Mem: 1804684 total, 222092 used, 1582592 free, 1744 buffers
KiB Swap: 0 total, 0 used, 0 free, 130476 cached

top – 02:20:08 up 48 min, 1 user, load average: 4.44, 4.19, 3.93
Tasks: 85 total, 1 running, 84 sleeping, 0 stopped, 0 zombie
%Cpu0 : 68.5 us, 1.0 sy, 0.0 ni, 27.8 id, 0.0 wa, 0.0 hi, 2.6 si, 0.0 st
%Cpu1 : 0.3 us, 1.0 sy, 0.0 ni, 97.8 id, 0.9 wa, 0.0 hi, 0.0 si, 0.0 st
%Cpu2 : 0.1 us, 0.1 sy, 0.0 ni, 99.8 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
%Cpu3 : 0.4 us, 0.6 sy, 0.0 ni, 99.0 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
KiB Mem: 1804684 total, 262048 used, 1542636 free, 1744 buffers
KiB Swap: 0 total, 0 used, 0 free, 170796 cached

DSD→PCM変換は一つのCPUに任せきって、残りのCPUに音楽再生に必要な動作を割り振っている雰囲気です。
余裕の安定感です。
DSD音源に興味がある人にとっては朗報だと思います。

それから個人的にはまり興味はないのですが、「Mubox-i4」で88.2KHzや96KHzにアップコンバートさせるのもかなり余裕を持って実行できるのではないかと思います。

しかし、現状ではDSD音源にもアップコンバートにも興味がないので、個人的にはそのあたりのことはどうでもいいことです。
興味があるのは、おそらくQuad Core(4コア)の「Mubox-i4」ならば、プロセスの優先度という細かいチューニングが必須ではないと思われることです。

レガシーな「Cubox」の場合はRTカーネルに入れ替えてプロセスの細かい優先度を調整して、音楽再生に必要な動作を最優先させるように設定すれば音質ははっきりと向上しました。しかし、Quad Core(4コア)ならば、そんなチマチマしたチューニングをしなくても、音楽再生に必要なプロセスは必ずどこかのCPUに最優先で割り振られるはずです。

「Mubox-i4」をインストールしただけのデフォルト状態で、徹底的にチューニングされた「レガシーCubox」を音質面で上まっわたのは、そのような事情があるのではないかと睨んでいます。ですから、現状では「Mubox-i4」のカーネルをRTに入れ替えることで苦闘されている方も多いようなのですが、上手くいったとしても「レガシーCubox」の時ほどのメリットはないかもしれません。
ただし、そのあたり勉強不足もありますので、ドンドン突っ込みを入れてくれると嬉しいです。(^^;

CPUの周波数が倍になると、それが周囲にばらまく電磁波ノイズは二乗の4倍になると言われました。4倍になれば電磁波ノイズの量は16倍です。
しかし、Quad Core(4コア)ならば単純に4倍ですみます。そして、そのデメリットをはるかに上回るメリットがQuad Core(4コア)にはあります。

それから、DSD→PCM変換の様子を見ていると、DualCore(2コア)でも充分なような気もしますが、そればかりはやってみないと分かりません。ただし、この間の経験から、CPUやメモリからまき散らされる電磁波ノイズは周辺部でそれなりの対策を施せば何とかなるような気がしていますので、本命はやはり「CuBox-i4Pro」かなと思います。


1 comment for “Quad Core(4コア)のメリット

  1. 2014年2月22日 at 6:30 PM

    こんにちは。
    面白そうなので、我が家のVortexboxサーバーでやってみました。

    内蔵のVortexboxPlayerでFLACファイルを再生しているときの状態です。
    CPUはATOM D2700(デュアルコア-4スレッド 2.13GHz)

    [vortexbox.localdomain ~]# top
    top – 17:37:23 up 8:48, 1 user, load average: 0.01, 0.06, 0.05
    Tasks: 134 total, 1 running, 133 sleeping, 0 stopped, 0 zombie
    Cpu0 : 0.3%us, 0.0%sy, 0.0%ni, 99.7%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st
    Cpu1 : 0.3%us, 0.3%sy, 0.0%ni, 99.3%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st
    Cpu2 : 0.3%us, 0.0%sy, 0.0%ni, 99.7%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st
    Cpu3 : 0.3%us, 0.3%sy, 0.0%ni, 99.3%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st
    Mem: 2052956k total, 1924880k used, 128076k free, 35072k buffers
    Swap: 524284k total, 0k used, 524284k free, 1604744k cached

    PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
    1356 root 20 0 98.6m 21m 3748 S 1.0 1.1 2:38.77 mpd
    1155 squeezeb 20 0 112m 93m 5084 S 0.7 4.7 5:58.27 squeezeboxserve
    1166 root 20 0 5708 1644 1228 S 0.3 0.1 0:25.21 docd.sh
    1 root 20 0 5472 3392 2000 S 0.0 0.2 0:01.73 systemd
    2 root 20 0 0 0 0 S 0.0 0.0 0:00.01 kthreadd
    3 root 20 0 0 0 0 S 0.0 0.0 0:00.02 ksoftirqd/0
    5 root 0 -20 0 0 0 S 0.0 0.0 0:00.00 kworker/0:0H
    6 root 20 0 0 0 0 S 0.0 0.0 0:00.01 kworker/u:0
    7 root 0 -20 0 0 0 S 0.0 0.0 0:00.00 kworker/u:0H

    殆ど負荷は掛かっていません。

Comments are closed.