32bit版では4Gbのメモリは認識しきれないようです。

アップサンプリングの話から少しそれます。

APU1C版のlightmpdがリリースされたときに32bit版と64bit版の2種類がでたので、どちらを選ぶかという話が少しばかり盛り上がりました。
私は最終的に32bit版を選択したのですが、それでも「新しいボードが開発されて搭載されるメモリが4Gbを超えるようになれば64ビット版のメリットをもう一度しっかりと確かめる必要があるな」とは感じました。そして、新しいボードの登場とまではいかなくても、「メモリが4Gb搭載されている「APU.1D4」で64bit版のlightmpdを走らせればどんな音がするのだろう?」と言う興味についてふれておきました。

そして、「APU.1D4でも問題なくlightmpdは動作します。」で「32ビット版のSDカードはまだ試していませんが、もしかしたらメモリが全て認識できない可能性がありますね。」と書いたのですが、実際に試してみるとやはり認識できないようです。

htopコマンドで確認してみると以下のようになります。

<32bit版>
Mem[||#* 64/3534MB] Uptime: 00:00:50

<64bit版>
Mem[|||#****** 87/3919MB] Uptime: 00:19:16

32bit版では約400Mbも取りこぼしています。
確かに、64bit版はメモリ管理のために32bit版よりはメモリを食いつぶしていますが、そんな些細な違いは吹き飛んでしまうほどの取りこぼしです。

メモリの余裕がどのような理屈で音質に影響を与えるのかは全く分かりませんが、メモリを2Gbしか積んでいなかった「APU1C」では不満に感じた部分は、メモリを4Gb積んでいる「APU.1D4」では大幅に改善されたように聞こえます。
それに加えて、64bit版のメリットであった音の太さや濃さはさらに魅力的なものになっています。
このあたりを勘案すると、「APU.1D4」を前提として64bit版をファーストチョイスにした方がいいのかもしれません。とはいえ、最終的にはもう少し時間をかけてじっくりと聞き込んでみる必要があります。

しかし、32bit版でsamplerate_converterを「Best Sinc Interpolator」に設定してもCPUの負荷が64bit版よりも大きくなることはありませんでした。
htopコマンドで確認したシステムの状況です。

1 [############################################################* 55.9%] Tasks: 10, 4 thr; 1 running
2 [#* 1.0%] Load average: 0.36 0.10 0.04
Mem[|||#** 74/3534MB] Uptime: 00:04:26
Swp[ 0/0MB]
PID USER PRI NI VIRT RES SHR S CPU% MEM% TIME+ Command
215 root 20 0 75928 40152 19036 S 56.0 1.1 0:27.53 /usr/bin/mpd
219 root RT 0 75928 40152 19036 S 56.0 1.1 0:26.53 /usr/bin/mpd
232 root 20 0 2796 1336 972 R 0.0 0.0 0:00.27 htop
218 root 20 0 75928 40152 19036 S 0.0 1.1 0:00.23 /usr/bin/mpd
217 root -54 0 75928 40152 19036 S 0.0 1.1 0:00.05 /usr/bin/mpd
1 root 20 0 2688 768 672 S 0.0 0.0 0:03.12 init
120 root 20 0 2688 768 680 S 0.0 0.0 0:00.00 /sbin/syslogd -n
121 root 20 0 2688 780 676 S 0.0 0.0 0:00.01 /sbin/klogd -n
168 root 20 0 2308 656 504 S 0.0 0.0 0:00.00 rpcbind
170 root 20 0 2536 1144 792 S 0.0 0.0 0:00.00 rpc.statd -L
208 root 20 0 2748 740 632 S 0.0 0.0 0:00.00 /usr/sbin/telnetd
216 root 20 0 75928 40152 19036 S 0.0 1.1 0:00.00 /usr/bin/mpd
227 root 20 0 2692 732 640 S 0.0 0.0 0:00.00 /sbin/getty -L ttyS0 115200 vt100
228 root 20 0 2748 864 744 S 0.0 0.0 0:00.00 -sh

CPUへの負荷は64bit版とほとんど変わりません。
と言うことは、64bit版のメリットとしてよく言われる高速処理と言うことは、MPDにおいてはあまり有り難みがないようです。

とはいえ、4Gbのメモリをきっちり4Gb認識できる64bit版(当たり前ですが・・・^^;)は「偉い!!」と言えます。