いさぽん部屋(isapon.com)

ゲーム系プログラマによる特に方針のないブログ。技術系とカレー、ラーメンネタ多めだったはずが、最近はダイエットネタ多め。

パソコンのフィルターを掃除するとどれだけ冷却効果が変わるのか

仕事道具なので壊れると収入に響いてくるので、年末は毎年パソコンの大掃除と点検をしています。


今年になってちょいちょいPCで3Dゲームを動かすようになったせいなのかGPUのパワー不足を感じるように…と思ったらやっぱり負荷が高い状態が続いたせいなのかGPUの調子がおかしくなり、GPUを取り替えました。


と、思ったら電源ファンがちゃんと回っていないことに気が付き電源も急遽買い換えました。もっとも耐用年数3年の電源を3年間ほぼ24時間稼働に近い状態で使い続けたので低価格の電源なのに十分健闘してくれたのではないかと思う。


併せてPCの中も掃除してあげることにします。と、今年は掃除に合わせて「もしかしたら掃除したら冷却効果に影響があるのかもしれない」とふと思ったので、掃除前と掃除後でどれだけパソコンの冷却効果に影響が出てくるのかベンチマークをとってみたいと思います。


ベンチマーク対象のパソコンについて

さて、まずは今回ベンチマークをとるパソコンのエアフローについて説明します。


正面から見た写真です。ケースは今は亡き「Abee」の「B10」というもの。メンテナンス性には若干不満がありますが、見た目の可愛さとこれから説明するエアフローの良さから気に入っています。どこか別のメーカーで権利を買い取って再生産してもらえないだろうか?


f:id:no-operand:20191212191850j:plain
Abee B10

エアフローはこんな感じです。フロントに12センチファンが2つあり、CPUとGPUを通過して後ろに抜ける構成でいい感じに正圧(吸気>排気)になっています。このフロントファンの前に防塵用のフィルターがつけてあり、パソコン内部に埃が入らないようになっています。実際、1年間掃除しなくてもパソコン中はあまり埃が見つからないくらいに綺麗です。

f:id:no-operand:20191212185033j:plain

個人的には吸気がしっかりできていれば埃が入り込む部分を絞り込めるので、パソコンの中に埃が入る場所をコントロールできるため、結果としてパソコン全体の寿命を延ばしやすくなるのではないかと思っています。


とりあえずフィルターの汚れを見てみる

ケースを開けてフロントの埃がどれくらい蓄積しているのか見てみます。と、思ったのですがフィルターの汚れがすさまじくフィルターを外した瞬間に大きな埃がポロっと落ちました……


にもかかわらず、これくらいは汚れていますよー。と。


f:id:no-operand:20191212183100j:plain
掃除前のフロントファンフィルター

ある程度埃が落ちたにも拘らずファンガードの跡がくっきり分かるくらいに汚れが付着しています。


いったんこの状態でベンチマーク。


使ったのは「3DMark Time Spy」メジャーなベンチマークソフトですね。


フィルター掃除前のGPUとCPU温度

f:id:no-operand:20191212190223j:plain
掃除前のGPU温度

f:id:no-operand:20191212190249j:plain
掃除前のCPU温度

掃除前はGPUが最大で84℃、CPUが最大で79℃に達しています。ちなみにフロントファンは800RPMくらいで小型ケースでの計測と考えると悪いもんじゃないかと思います(静音モード※)。


ではフィルターを掃除&洗濯…なのですが、フィルターが乾くまで半日はかかるので今回はフィルター交換で済ませます(同じフィルターを2セット持っているので交換による性能は変わらないはず)。

※フロントファンとCPUファンの騒音レベルはピーク時でも13dbくらいなのでかなり静か。

フィルター交換後のGPUとCPU温度

ベンチマークを1度走らせた後なので、実際には不利な状態なのですがはたしてどのくらい差が出るのか…?


f:id:no-operand:20191212190206j:plain
掃除後のGPU温度

f:id:no-operand:20191212190301j:plain
掃除後のCPU温度

GPUは82℃、CPUは74°です。


交換前と後をそれぞれ比較

GPU

f:id:no-operand:20191212194143j:plain f:id:no-operand:20191212194159j:plain

フィルター交換によって84℃から82℃になった。2℃の冷却性能アップ。


CPU

f:id:no-operand:20191212194425j:plain f:id:no-operand:20191212194431j:plain

フィルター交換によって79℃から74℃になった。5℃の冷却性能アップ。


フィルター交換は劇的な冷却効果アップ!

フィルター交換でここまで冷却効果が変わるんだなーと実感。パソコンの故障の原因で多いのが案外埃だったりもするし、道具の寿命を延ばすという意味でフィルター交換(掃除)は年に2回くらいはやったほうがいいかもですね。


考察

GPUよりもCPUのほうが効果が高かったのは、フロントファンの空気がどちらかというとCPU方面に流れやすいのが原因かなーと。もしかしたらエアダクトなどを取り付けてGPU側にももう少し空気が流れやすい状態を作るとGPUの冷却性のが上がるかもしれない。


とはいえ、素人考えで下手に手を入れるとかえって悪化することもあるのでこのままにしておこうと思う。


おすすめしょーひん

12センチケースファン。同じ回転数なら他のファンより静か&風量が大きいので結果よく冷えます。

Noctua - NF-S12A PWM対応 ファン

Noctua - NF-S12A PWM対応 ファン

  • メディア: Personal Computers

12センチファン用のフィルター。AINEXのものは安くておすすめです。

AINEX 交換用フィルター [ 120mm用 ] CFF-DF120A

AINEX 交換用フィルター [ 120mm用 ] CFF-DF120A

  • 発売日: 2015/05/29
  • メディア: Personal Computers

現在使っている電源。ATX電源の中では一番奥行きが短くてケーブルが取り外し可能なタイプは現在ではこれのみ。
小型ケースでもケース内のスペースを稼ぎやすいので結果冷却効果があがるんじゃないかと思う。

※もともとは玄人志向の電源を使っていたのだけど、製造終了になってしまい、後続商品はケーブルが取り外しできないタイプのみになってしまった。

clang/gcc bugs? 可変長テンプレートの特殊化を伴ったキャストがうまくいかない。

clang/gcc) 可変長テンプレートのクラスを継承しているとき、暗黙的なキャストに失敗する。
VisualC++) コンパイルが通り思惑通りの結果を取得できる。


clang/gcc) Implicit casting fails when inheriting variable-length template class.
VisualC++) can be compiled and get the expected results.


誰かclangのチームにレポートを送ってくれ(自分でするのは面倒なのでやりたくない)。
Please send a report to some clang team.

// prototype. not use.
template<class...>
struct  lasttype;


// one type specialize.
template<class First>
struct  lasttype<First>
{
    using   type    = First;
};


// not ones.
template<class First, class... Other>
struct  lasttype<First, Other...>
        : lasttype<Other...>          // Problem.
{
};



template<class First, class Second, class... Other>
void func(lasttype<First, Second, Other...>&)             // Error. Can't implicit cast.
{
}



struct  bar
        : lasttype<char, short, int>     // I want implicit cast to lasttype<F, S, O...>
{
};


int main(int _argc, char** _args)
{
    bar t;
    func(t);
    return  0;
}

【c++】 idiv命令が最適化されるか試してみた

x86互換のCPUには割り算命令(idiv)を行うと、同時に余りも求めてくれます。なのでどちらも求める場合は1命令で求めることができるわけです。例えば以下のようなプログラムを書いた場合idiv命令1回でdivとmodを求めることができます。

std::pair<int64_t, int64_t> div(int64_t operand1, int64_t operand2)
{
    auto    div = operand1 / operand2;
    auto    mod = operand1 % operand2;
    return { div, mod };
}

なので、以下のような呼び出しを行った場合、idiv1回とadd1回で済む計算になります。

auto [d, m] = div(x, y);
int64_t a = d + m;

感覚的には次のようになるかと思います。

mov   rax, operand1
mov   rbx, operand2
cqo            ; rax => rdx:rax
idiv  rbx      ; rax = div, rdx = mod
add   rax, edx

もし、予測通りのコードを生成してくれたらプログラムの書き方もいろいろと幅が広がりそうです。

clangでコンパイルしてみる

最適化オプションをつけないとちゃんと意図通りにいかないかなーと思い、とりあえず最適化オプションを有効にしてコンパイルしてみます。

clang++ -S -mllvm --x86-asm-syntax=intel -O2 -std=c++17 mul.cpp

結果は以下の通り。addではなく結果をrsiに格納するためにleaを使っていますが予想通りの結果を生成してくれました。

mov rcx, rax
mov rax, r15
cqo
idiv rcx
lea rsi, [rdx + rax]

idivの最適化を行ってくれる。ということで。

imulの最適化もやってみた

ついでに掛け算もやってみる。

掛け算命令(imul)は結果を倍精度(rdx:rax)に拡張して結果を返します。 なので以下のように書いた場合は1回の掛け算で済むはずです。

std::pair<int64_t, int64_t> mul(int64_t _operand1, int64_t _operand2)
{
    T   h   = (__int128)_operand1 * (__int128)_operand2 >> (sizeof(int64_t) * 8);
    T   l   = (__int128)_operand1 * (__int128)_operand2;
    return  { h, l };
}

auto [d, m] = mul(v1, v2);
int64_t a = (d + m);

以下のようになってくれると良いなぁ…と。

mov rax, operand1
mov rdx, operand2
imul rdx
add rax, rdx

結果はうまくいきました。思った以上に最適化がよくできている!これでいろいろとプログラムの幅が広がるぞ!

【minecraft】 雷で家が全焼した原因を解明した話

f:id:no-operand:20190909113743p:plain

本拠点で育ててきた司書たちですが、念願の「修繕のエンチャント本」の取引ができる村人が現れた。


f:id:no-operand:20190909113452p:plain

それを記念して図書館というかエンチャント研究所的なものを建築。設計はオリジナル。初めての本格的な建築にしてはうまくできた!と思う。


f:id:no-operand:20190909114000p:plain

中はこんな感じで小部屋に分けてあって司書と取引しやすくなってる。


f:id:no-operand:20190909113459p:plain

満足したのでその日は(リアルに)寝たのだけど、(リアルに)台風がすごかったせいもあって夜中急に目が覚めた。ちょっとツイッターを覗いたら「建物が燃えてる」とのツイートが……気になってマイクラを起動してみると無残にも全焼していました。


建物が燃えたショックもでかいけどそっちは建て直せばよい話。それより司書が…


これは同じことを繰り返したくないぞ!


ということでサーバーで一定間隔ごとにワールドのバックアップを取っているので、バックアップデータをPCにコピーしてシングルモードかつクリエイティブモードで火災の再現をしてみます。


火元を探る

f:id:no-operand:20190909113433p:plain

まずはどこから燃えたのかを突き止める。向かって右上の屋根が残っていることから、左下から燃えたのが予測できたのでまずはマグマで適当に着火(別に火打石でもなんでもいいけど)。


大体同じような感じで燃え広がるのが確認できたぞ。


あとは、なぜそこから出火したのか?だけど。


誰かが火を放つか、雷か。サーバーのログを見る限り見知らぬ人がログインした形跡はなかったので、前者は無いなーと思うので雷の線で調べてみます。


雷で家が全焼する原因

f:id:no-operand:20190909113419p:plain

あれこれ書くより、答えを簡潔に!


画面写真のスライムブロックの位置がおそらく出火元です。よく見ると、画面向かって右側は雨が降っているのに、左側は降っていないのがわかります。


スライムブロックの位置に雷が落ちると一瞬火は着くけど本来は雨で自然に消火されます。


ところが、建築物が建っていたのは「サバンナバイオーム」で雨が降らないバイオーム。スライムブロックはバイオームの境目のあたりで、ここに雷が落ちた場合、サバンナバイオーム側に火が燃え移ると雨が降らないために火が消えない……という最悪の事態に。


さらに仮説を裏付けする

本当にそれで火が着くのか?というのを裏付けするために、ちょっと実験。


f:id:no-operand:20190909124454p:plain

こんな感じの実験場を作りました。向かって左は屋根なしの木の壁、右側は1マスの屋根付きの期木壁です。壁に挟まれた土ブロックに雷が落ちたものとして火打石で火を点火。


f:id:no-operand:20190909124649p:plain

すぐに引火しました。壁から1マス離れていてもどうやらアウトのようです。


これで安全!

f:id:no-operand:20190909125220p:plain

石の屋根を2マスつけて、木の壁から2マスは落雷がないようにします。


さらに壁から2マスに石や砂、砂利、水など不燃ブロックを敷き詰めて引火しないようにします。


【minecraft】村人死す。

f:id:no-operand:20190901122310p:plain

昼飯前にちょっくらマイクラのサーバーにログインしたところ、襲撃が始まっていました。誰だ襲撃中にログアウトした人は?(笑)


f:id:no-operand:20190901122326p:plain

とは言え村は柵で囲まれているので弓と矢があれば楽勝楽勝!


と、思っていたら最終ウェーブでヴェックスが出現。素早く飛び回るので撃ち落とすのが大変だ!!


f:id:no-operand:20190901122954p:plain

無事襲撃者を撃退したので、ここぞとばかりに製鉄所で貯蓄した鉄を道具職人と鍛冶職人に大量に売りさばく!イヤッホウ!!


f:id:no-operand:20190901122401p:plain

金持ち万歳!このエメラルド天国!もう買い物しまくりじゃい!


と、思っていたら……


f:id:no-operand:20190901123330p:plain

……柵の中にいたから安全だと思っていた村人が全滅していた……ヴェックスに殺戮された模様……スマヌ……村人。


f:id:no-operand:20190901123152p:plain

というわけで、今度はガラスで上まで完全に囲って安全性を高めました。これでちょっと安心かな?

凄いよメダカさん。メダカの水質浄化能力に腰を抜かすがよい!

普段玄米を食べているのですが、ふと「これって育つんかな?」などと思い立ち、玄米を何粒か水につけていたところ発芽しました。


そこでベランダに田んぼ(もどき)を作って苗を植えてみました。


実験もかねて水が減ってきたら注ぎ足す以外は基本放置だったのですが、気が付いたらアオコやらなんやらが大量発生してきました。これがその写真で昨日の昼過ぎに撮影したものです。


f:id:no-operand:20190728121122j:plain

流石にこれは稲に栄養がいかなくなるのでよろしくないなーと。


あと、虫も湧くし……


こういうときは生体兵器で解決する(生態系を作り出す)のがアクアリウムの基本。そこで生体兵器を投入することにしました。


言うても、まぁ、近所のペットショップで1匹50円で売られている黒メダカです(ちなみに10匹セット500円だったのでそちらをお迎え)。


水温だけ合わせたらとりあえずドボン。


そして約20時間経過した今日の朝の状態がこちら。


f:id:no-operand:20190729100316j:plain

どうです?この水質の改善っぷり!!さらに水がクリアになったことで今まで見えなかったボウフラをメダカがパクパクとつっついているのが見えます。


こうしてみると、メダカ…というか魚が住み着いてこそ池や川は活きてくるのかなぁと。


コケだらけの川や水があったらぜひとも魚を住まわせることを考えてみてほしいなぁ。(勝手に放流したらダメだぞ!)

クロメダカ10匹プラスおまけ5匹 計15匹(万一の場合の保証有)【生体 名生園】

クロメダカ10匹プラスおまけ5匹 計15匹(万一の場合の保証有)【生体 名生園】

黒メダカ 10匹 [生体]

黒メダカ 10匹 [生体]

引っ越しました(だいぶ前に)

ども、お久しぶりです。なんとなく更新をサボったら気が付けば前回の更新から半年が経過していました。


しかもドメインの更新を忘れていたり色々と放置……しっかり更新しないとね!(苦笑)


(去年)引越しした

約10年ほど暮らした浅草から多摩市へ引越した。理由はいくつかあるけど在宅で仕事をする事になったので空気の奇麗なところに住みたいというのが大きな理由。


浅草時代は自宅から花火大会も見えたしスカイツリーも見えたしとかなり都会ライフだったのに、今や目の前は森です。裏側は竹林です(笑)周囲には虫がぶんぶん飛んでます(笑)


最初は虫嫌だなーなんで思っていましたが、1か月くらい過ぎたころには慣れたもんです。むしろ野菜の値段も安いし夏でも涼しい(冬はすごく寒い)ので自炊する人間としてはとても住みやすく感じる。何より家賃は約半分になり敷地面積は2倍以上。坪単価で言えば75%オフ(笑)


引っ越しビフォーアフター

f:id:no-operand:20180729190015j:plainf:id:no-operand:20180803141501j:plain

引越ししたもう一つの理由

関東大震災怖いなーというのが引っ越したもう一つの理由だったりする。 浅草時代に住んでいた場所、たぶん水没するんだ。少なくともハザードマップでは水没が予想されるエリアとしてマークされていた。


そんなわけで地盤が強くて水没しなくて……というのが引っ越し先を探すときの最優先事項。


とまぁ、そんなわけで引っ越しして半年以上経過したけど今のところ楽しくやってます。