コア、使い切るとか考えたことないなぁ。
仕事ではOSのウィンドウマネージャとか、デスクトップUIとかを作る仕事をしているが、こういう部分のコードというのは、コアは使い切らないほうが良い。ユーザの主たる感心はアプリケーションであって、コアみたいなリソースはそっちに割り振られるべき。だから考えるべきなのは、所望するエフェクトを実現しつつ、きびきびと動作しつつコアのようなものは使わないようなやり方はどうなのか、っていうことだ。
結果的に検討しないといけない条件や、導入するべきテクニックや方法論は似通ってる。たとえば、ブロッキングを避ける。コアを専有しないように、無駄な計算は避けて、コアが渋滞しないように気をつける。UIスレッドはひとつだけなので、重くなる処理は別のスレッドに移譲したり。でもその結果としてCPUがストールしてても、そこは比較的どうでもいい。というかそんな重たい処理はあるべきではない、というべきか。
もちろんこれが全てではなく、コアを大量に使ってでもうまく動いてくれるとありがたい部分ていうのもあるだろうとは思う。たとえばログイン時とかはいろんな初期化が走るけど、こういうのはできるだけすぐ終わってほしいし、へんな初期化プロセスがコアを専有してそれがシステム全体を阻害してくれては困る。でもそこをすごくきちんと頑張ってコアを使い切る、といったことは意義がありそうだが(あんま詳しくないけど)ちゃんと達成できてはいない気もする。大量のサービスやプロセスが行き来して全体像は把握しづらいし。無駄にブロックしないとか、UIやアニメーションの足を引っ張るようなことはしない、ぐらいは気をつけているだろうけれど。
あと、仕事のレイヤが変わってカーネルレベルになれば、アプリケーションが各種走ったときにきちんとコアが使い切れてくれるか、といったスケジューリング的な意味での興味とかも、あったりするのかもしれない。そのへんも詳しくないのでよくわからないけど。
今はChromebookはたいがいしょぼいのでコアが少ないけど、今後どんどんコアが増えてきたら話はかわるだろうか? そんな変わんないんじゃないか。どんなコアが増えても、シングルコア性能の伸びがサチっても、ウィンドウマネージャがマルチコアで複雑な計算をすることは、正直考えづらい。あとラップトップOSみたいな文脈では、単一のアプリケーションがコアを使い切れなくて余っても別にそんな困らないだろうという気がする。複数アプリが同時に動いても総合的にきびきび動くなら嬉しいし、仮にコアがあまったりしてもそれだけ消費電力が減り、利用時間が伸びるだけなので、それはそれでいいことのような気もする。かつまた、いつまでたってもローエンド機は居残り、ローエンドでもひどくならないような工夫は残るんじゃないかなあ。
各種のアクセラレータが搭載されることで、別種のパラレリズムが要求されるようなことはありそう。アクセラレータを利用するようなOSサービス(たとえばローカルで動く音声アシスタント機能とか)が増えて、きちんとタスクを分配して無駄なく協調動作させるにはどうしたらいいだろうか、みたいな問題。モバイルでこの問題は起こりつつあるという認識だけど、ラップトップOSだとどうだろうか。そんな特殊なアクセラレータが入ったデバイスは多くないから、まだまだ未来の話かなあ。