4章GoでのCPUリソースの活用方法の(ちょっとした)解説
もっとも有用な抽象化の1つは、ハードウェアとインフラストラクチャシステムの特性をリソースとして扱うことです。 CPU、メモリ、データストレージ、ネットワークは、自然界の資源に似ています。 それらは有限であり、現実世界の物理的な物体であり、生態系のさまざまな主要なプレイヤー間で分配され共有されなければなりません。
Susan J. Fowler, Production-Ready Microservices (O'Reilly, 2016) [1]
「1.1 性能の背後にあるもの」 で学んだように、ソフトウェアの効率は、プログラムがハードウェアリソースをどのように使用するかに依存します。 同じ機能で使用するリソースが少なければ、効率は向上し、そのようなプログラムを実行するための要件と純費用は減少します。 たとえば、CPU時間(CPU「リソース」)やアクセス時間の遅いリソース(ディスクなど)の使用量が少なければ、通常、ソフトウェアのレイテンシーを減らせます。
これは単純に聞こえるかもしれませんが、現代のコンピューターでは、これらのリソースは複雑で自明でない方法で相互に作用しています。 さらに、複数のプロセスがこれらのリソースを使用しているため、私たちのプログラムはこれらのリソースを直接使用することはありません。 そのかわり、これらのリソースはオペレーティングシステムによって管理されています。 これでもまだ十分複雑でない場合、特にクラウド環境では、ハードウェアをさらに「仮想化」して、多くの個々のシステムで分離して共有できるようにすることがよくあります。 ...
Get 効率的なGo ―データ指向によるGoアプリケーションの性能最適化 now with the O’Reilly learning platform.
O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.