「Voyage MPD」ができる限りストレスなく動作するような「優先度」の設定について試行錯誤をしています。
この件については、ある程度の考えがまとまれば報告したいと思っていますが、まだ少し先になりそうな気配ですので、今日は小ネタを一つ。
音楽再生のPCにとってマルチコアのCPUとシングルコアのCPUでは、どちらが音質的に有利か
あちこちで議論されているようですが、大勢としては「シングルコアのCPU」の方に軍配があがりつつあるようです。
これは、普通に考えると実に不思議な結論なのですが、「ハード構成をできる限りシンプルにした方が音質的には有利」という原則から考えてみると、CPUもできる限りシンプルに動作した方が音質的には有利と言うことなのでしょう。
もともと、「音楽再生」というのは、現在のPCにとっては「重い」動作ではありません。ですから、どうしても「マルチコア」でなければ困るということはありません。ならば、できる限りシンプルに動いた方がいいと言うことになるのかもしれません。
もっとも、このあたりのことは全く「理論的根拠」のない、私の「感覚的」なものにすぎませんが・・・。
「AtomN270」ってシングルコアじゃなかったの?
ただし、昨今のPCは基本的に全て「マルチコア」のCPUを積んでいて、「シングルコア」のCPUを積んだ新品のPCなどはほとんど見あたらないと言うのは困ったものです。
しかし、私が使っている45000円也のシンプルなファンレスPCはCPUが「AtomN270」なので大丈夫だと思っていました。「AtomN270」はシングルコアだと言うことです。
ところが、最近、
cat /proc/interrupts
とすると、
CPU0 CPU1
0: 16377 0 IO-APIC-edge timer
1: 2 0 IO-APIC-edge i8042
7: 28 0 IO-APIC-edge
9: 0 0 IO-APIC-fasteoi acpi
12: 4 0 IO-APIC-edge i8042
14: 0 0 IO-APIC-edge ide0
15: 0 0 IO-APIC-edge ide1
16: 1727 0 IO-APIC-fasteoi uhci_hcd:usb5, i915, eth0
18: 0 0 IO-APIC-fasteoi uhci_hcd:usb4
19: 2517 0 IO-APIC-fasteoi uhci_hcd:usb3, ata_piix
23: 2 0 IO-APIC-fasteoi ehci_hcd:usb1, uhci_hcd:usb2
NMI: 0 0 Non-maskable interrupts
LOC: 12587 18743 Local timer interrupts
SPU: 0 0 Spurious interrupts
PMI: 0 0 Performance monitoring interrupts
PND: 0 0 Performance pending work
RES: 4721 5997 Rescheduling interrupts
CAL: 366 863 Function call interrupts
TLB: 244 434 TLB shootdowns
と表示されます。
あれ・・・?これってマルチコアになっているじゃないですか・・・?
おかしいな・・・、いつから「AtomN270」はマルチコアになったんだと思ってあれこれ調べてみると、分かりました。
どうやら、「AtomN270」には「HyperThreading」と言う機能がついていて、この機能によって本来は「シングルコア」である「AtomN270」を擬似的に!!に、「マルチコア」であるかのように動作させているらしいのです。
何という、余計なことをしてくれるんだ!!です。
シングルコアは純粋にシングルコアで動いてくれた方が絶対いいに決まっています。
そこで、今回の小ネタは、この余計な機能を切ってしまう方法です。
「HyperThreading」と言う機能がをオフにする方法
やり方は至って簡単です。
「grub」の設定ファイルを開いて編集するだけです。
vi /boot/grub/menu.lst
「Voyage MPD」の場合はこんな感じになっているはずです。
#
# This file generated automatically by /usr/local/sbin/setboot.sh
# on Sun Jan 16 13:26:06 UTC 2011
#
timeout 1
default 0
title voyage-linux-16Jan11
root (hd0,0)
kernel /vmlinuz root=LABEL=ROOT_FS
initrd /initrd.img
これの「kernel /vmlinuz root=LABEL=ROOT_FS」の行に「maxcpus=1」を追記するだけです。
#
# This file generated automatically by /usr/local/sbin/setboot.sh
# on Sun Jan 16 13:26:06 UTC 2011
#
timeout 1
default 0
title voyage-linux-16Jan11
root (hd0,0)
kernel /vmlinuz root=LABEL=ROOT_FS maxcpus=1
initrd /initrd.img
これで、再起動すれば「HyperThreading」と言う余計な機能はオフになります。
ためしに
cat /proc/interrupts
としてみると、
CPU0
0: 1593 IO-APIC-edge timer
1: 2 IO-APIC-edge i8042
7: 34 IO-APIC-edge
9: 0 IO-APIC-fasteoi acpi
12: 4 IO-APIC-edge i8042
14: 0 IO-APIC-edge ide0
15: 0 IO-APIC-edge ide1
16: 1507 IO-APIC-fasteoi uhci_hcd:usb5, i915, eth0
18: 0 IO-APIC-fasteoi uhci_hcd:usb4
19: 2044 IO-APIC-fasteoi ata_piix, uhci_hcd:usb3
23: 2 IO-APIC-fasteoi ehci_hcd:usb1, uhci_hcd:usb2
NMI: 0 Non-maskable interrupts
LOC: 17374 Local timer interrupts
SPU: 0 Spurious interrupts
PMI: 0 Performance monitoring interrupts
PND: 0 Performance pending work
RES: 0 Rescheduling interrupts
CAL: 0 Function call interrupts
TLB: 0 TLB shootdowns
ERR: 34
MIS: 0
となっていて、シングルコアとして動作しています。
なお、この「maxcpus=1」を追記すると、正真正銘ののマルチコアのCPUでもシングルコアで動作させることができるそうです。まあ、普通はそんなことをする人はほとんどいないと思いますが、音楽再生に特化したPCなら試してみる価値はあるかもしれません。
音質的な変化ですが、これはそれぞれの判断にまかせます。微妙に改善しているような気はしますが、シングルコアのCPUが純粋にシングルコアとして動作しているという精神衛生上の効果の方が大きいように思われます。
優先度の設定ほどの「劇的効果」はありませんが、興味のある方は一度チャレンジしてみてください。
ユングさん、こんにちは。
僕はAtom230とAtom330の二つを持ってまして、230はシングルCPUのパイパースレッド、330はマルチCPUのハイパースレッド(CPUは4つのように見える)です。この二つでご紹介のTipsの効き目は大分違います。330だと音の違いははっきり分かりますが、230では微妙です。面白いものですね。
ただ、なんとなく忌ま忌ましい気分になるのですよね。せっかくCPUが二つあるのに、一つで動かさないといけないのだから(^^;;;。
シンさんのサイトにLAN関連のOSチューニングする記事が最近掲載されています。これもなかなか効果的ですよ。是非お試しを。
ユングさん、はじめまして。
いまPCを自作しようと新注文しているところですが、私も貴記事を参考にして、シングルコアのCPUを探しました。なかなか少ないですが、Intel のSandyBridge版のCPUで、やっと一番下位のCerelon G 440 (LGA1155)というのを見つけ、注文しました。これはシングルコアで、しかもHTに対応していないCPUです。SandyBridgeと言えばコアi3/i5/i7が有名ですが、シングルコア&HTなしのCPUも、まだ残っているのですね。
>いまPCを自作しようと新注文しているところですが
正直申し上げて、PCを自作されるのならば、ALIX.3D2のような一枚基盤を使う方が圧倒的に音質的には有利です。この欄の情報は既に過去のものとなっています。
いささか水を差すようで申し訳ないのですが、それが正直なところです。