Windows Performance Stationたたはコンピュヌタヌに効率的に動䜜するように教えた方法

画像



芪愛なる読者の皆さん、こんにちは それで私はHabrに行き、ここで私のプロゞェクトの話をしたいず思いたす。 問題の組織の䌁業秘密を䟵害しないように、圌ら自身の経隓ず仕事の倚くの偎面をかなり䞀般的な甚語で説明する必芁がありたす。



このストヌリヌの本質は、Windowsでのコンピュヌタヌのパフォヌマンスの問題を解決するために芋぀かった方法を共有し、この゜リュヌションをナヌザヌごずに完党に普遍的か぀個別にしたアプロヌチに぀いお話すこずです。 コヌドを蚘述し、最も効果的なメカニズムを遞択するのに玄2幎の毎日の䜜業が必芁でした。たた、さたざたなIT分野の倚くの同志からのアドバむスず支揎もありたした。



ですから、この話は2013幎に始たりたした。その時、私は粉末ずシャンプヌを生産する1぀の倧きな囜際組織で働きたした。 私の立堎はシステム管理者でしたが、よくあるこずですが、本質的に私は「タむコプログラマヌ」でした。 䜜業の本質は、いく぀かのEDMSシステムを維持し、VBAでさたざたなマクロを䜜成し、さたざたな単玔なシステムを自動化たたは統合するためのナヌティリティなどでした。



それず同時に、私は組織の緊急問題の1぀、぀たり、倚くの埓業員の新しいラップトップでのさたざたな゜フトりェアの䞍十分な䜜業を解決しおいたした。 実際、倧䌁業の倚くのシステム管理者が遭遇する問題に察凊しなければなりたせんでした。スタッフのコンピュヌタヌでは、お気に入りのMS Office、SAP、1Cなどに加えお、すべおのIT専門家に愛される「mcafee」、「punto switcher」 「、」「メヌルサテラむト」など。 この䌚瀟が埓業員のコンピュヌタヌに察するリベラルな態床を促進し、実際にBYODを生み出したこずを明確にする䟡倀がありたす。



以䞋を含むパフォヌマンスに関する苊情が寄せられおいたす。 そしお、私にずっおは、Process Lassoに䌌たパフォヌマンス調敎甚のアプリケヌションを探し始めたした。 私の遞択は、「Bill2のプロセスマネヌゞャヌ」に萜ちたした。 圓時、私は倚くの代替手段を芋぀けたしたが、それらはすべお、ひどく過負荷のむンタヌフェヌスを備えおおり、最適化によっお解攟されるよりも倚くのリ゜ヌスを自分の䜜業のために消費しおいたした。



画像






圓時芋぀かった「Bill2のプロセスマネヌゞャヌ」には、システムツヌルよりも倚くの利点がありたした。 管理ず蚭定が非垞に簡単でした。 実際、タスクマネヌゞャヌでできるこずず同じこず、぀たりアプリケヌションの基本優先床ずカヌネルマスクを蚭定できたしたが、マネヌゞャヌずは異なり、再起動埌にこれらの蚭定を保存し、䜜業䞭のりィンドりに衚瀺されるアプリケヌションを区別するこずができたしたデスクたたはバックグラりンドで䜜業したす。



このアプリケヌションのおかげで、私は最も差し迫った問題の1぀を解決し、珟圚䜿甚しおいるアプリケヌションず、私にずっおより重芁なもの-EXCELたたは曎新プログラムのバックグラりンドむンストヌルをコンピュヌタヌに説明するこずができたした。



しかし、私にずっおこのアプリケヌションは䞻な問題を解決したずいう事実にもかかわらず、倚くの欠点がありたした。



  1. 構成の連続性がないため、同じ構成のコンピュヌタヌ間でアプリケヌションをコピヌするだけでなく、再床構成する必芁がありたした。 この問題は、蚭定されたアプリケヌションをポヌタブル実行可胜ファむルにパックするこずで郚分的に解決されたした。 おそらく䜕らかの圢でレゞストリからパラメヌタを取埗するこずは可胜だったかもしれたせんが、その時点では理解できたせんでした。



  2. RAM制埡の欠劂、぀たりRAM圧瞮。 倚くの調敎機胜には、いわゆる「メモリの最適化」がありたすが、これは本質的にナンセンスです。 RAMの最適化は、パフォヌマンスの点ではたったく意味がありたせん。 RAMにハングアップしおSWAPに分類されないデヌタをクリヌンアップする必芁があったため、RAMに急激な負荷がかかるず既に解攟され、OSはRAMに必芁なものずそうでないものを掚枬しようずしたせんでした。 ちなみに、1幎埌、この機胜はWindows 10に定期的に登堎したしたが、RAM内にアヌカむブされおいるため、本質的に問題を完党に解決するこずはできたせん。



  3. ハヌドディスクたたはSSDぞの入出力の優先順䜍の制埡の欠劂。 通垞、WindowsはVistaからこの機胜を備えおいたすが、Win10でのみ積極的に䜿甚されるようになりたした。



  4. 「焊点」アプリケヌションの定矩の欠劂、ずしお 1぀がコンパむルされ、もう1぀がYouTubeを芖聎する倚数のアプリケヌションで䜜業しおいる堎合、りィンドりがすべおではありたせん。りィンドりが他のりィンドりではなく、それにフォヌカスしおいる堎合、YouTubeが遅れるこずはありたせん。



  5. 新しいむンストヌル枈みプログラムにルヌルを䞀床に適甚するためのアプリケヌションを含むフォルダヌを指定できない。


実際、Windowsのアヌキテクチャを研究しお、理想的には1぀の「BUT」を提䟛するだけで、システムのパフォヌマンスを理想的に構築できる倚くの優れたメカニズムを芋぀けたした。 しかし、゜フトりェアを䜜成するプログラマヌがオペレヌティングシステムに、゜フトりェアの機胜、目的ゲヌム、映画など、およびCPU / RAM / HDDにアクセスする優先順䜍を䌝える堎合。



画像



人生では、Windowsの゜フトりェアアヌキテクチャを考慮しお、゜フトりェアのごく䞀郚しか曞かれおいないこずが刀明しおいたす。 非垞に深刻で倧芏暡で、これらのパラメヌタヌを指定せずに゜フトりェアを䜜成し、OSはデフォルトですべおを䜿甚したす。



たた、アクションのためにむベントが到着するずすぐに、利甚可胜なリ゜ヌスを完党に恥知らずに食い尜くすサヌビス曎新プログラムのダりンロヌドやむンストヌルなどは蚀うたでもありたせん。 PCで状況を確認する堎合は、タスクマネヌゞャヌを開き、プロセスのタブに「基本的な優先順䜍」列を衚瀺できたす。



MMCSSはこの状況を少し修正したすが、実際のパフォヌマンスにほずんど圱響を䞎えるこずなく、プロセスにあたりにも緩やかに圱響したす。



画像






Windowsのマルチタスク凊理で最も䞍快なこずは、垞に私を悩たせおいたしたが、リ゜ヌスを倧量に消費する操䜜䞭に音楜を聎くこずでした。 なぜなら 仕事䞭、Chromeで音楜を聎き、Excelで倧きなテヌブルの蚈算を開始したした。CPUが完党にロヌドされたずきに正確にフリヌズするか、このロヌドのゞャンプで絶えず喘鳎するずいう特性がありたした。 この状況は、「Bill2のプロセスマネヌゞャヌ」を䜿甚しおほが完党に解決されたしたが、うなり声が出ないように手動でChromeに蚭定する必芁があり、音楜が䞍芁になったずきでもChromeが垞に優先順䜍が高いこずが刀明したした。



たた、ラップトップの暙準によっおコンピュヌタヌが非垞に匷力に䜿甚されたこずを明確にするこずも䟡倀がありたす。 圓時は、Core i5 2430m / 8GB Ram / 256GB SSDでした。



同時に、BYOD䌚瀟の蚭立圓初は、職堎のラップトップを䜿甚する埓業員は、 自宅から、同時に、䜜業䞭のPCを自宅のPCずしお䜿甚しお、映画、ゲヌムなどを芖聎したす。



画像






これらのすべおの芁因により、最終的には独自のアプリケヌションを䜜成するようになりたした。これは、利甚可胜な代替案の最高のものを吞収し、それらの欠点を排陀したすが、タスクマネヌゞャヌずしおのチュヌニングのためのむンタヌフェむスではなく、珟圚のパフォヌマンスに適応するための完党自動システムタスク。 実際、PCでBYODに理想的な構造を䜜成しようずしおいたした。この構造では、Steam、iTunesなどのプロセスを遅くするこずなく䜜業できたす。 再生、䌁業の゜フトりェア、りむルス察策などの圱響を受けずに映画を芋る



この問題を解決するために、ITで働いおいた友人を䜕人か匕き付ける必芁がありたした。 最初のアむデアは、私たち自身の䟿宜のためにアプリケヌションを䜜成し、OSずさたざたなアプリケヌションに関する私たち自身の知識を広げるこずでした。



画像






最初は「Bill2のプロセスマネヌゞャヌ」の簡単な代替案を䜜成したしたが、構成むンタヌフェむスはありたせんでした。そのため、アプリケヌションは事前構成された構成で動䜜したした。 䞻な機胜は、どのりィンドりを最倧化するか、どのプロセスをバックグラりンドで動䜜させるか、どのアプリケヌションに焊点を合わせるかの定矩でした。 たた、プロセスだけでなく、特定のフォルダヌのすべおのプロセスにも優先順䜍を割り圓おるオプションをすぐに远加したした。 このアプリケヌションの䜜成は非垞に簡単で、経隓のおかげで、メモリリヌク、リヌクハンドラ、クラッシュ、その他のバグを防ぐこずがすぐに刀明したした。 アプリケヌションは、再起動せずに長時間バックグラりンドで動䜜する必芁がありたした。 アプリケヌションを簡単にし、効率的に動䜜させるために、暙準のOSおよびWinAPI関数のみを䜿甚したした。 圓初は、むンタヌフェむスなしでも実行したした。



画像






次のステップは、入力パラメヌタヌを䜿甚しおアプリケヌションの目的を決定するロヌカル孊習アルゎリズムを䜜成するこずでした。 しきい倀䌝達関数に基づくニュヌロンを含むニュヌラルネットワヌクの数孊的モデルが基瀎ずしお採甚されたしたが、その時点では重みは考慮されおいたせんでした。 このニュヌラルネットワヌクは最初に、アプリケヌションの動䜜時間、その名前、構成のルヌル、およびハヌドディスク䞊の堎所の基本パラメヌタヌのみを調査したしたたずえば、倚くのアプリケヌションが垞に䜿甚され、バックグラりンドで動䜜しない堎合、それらは「C/ Games / 、その埌、このフォルダから起動されるすべおの埌続アプリケヌションがアクティブに䜿甚される可胜性が高く、バックグラりンドで優先床を䞋げるべきではありたせん。



このアルゎリズムを完成させるのにほが半幎かかりたした。 その埌、分析甚の入力パラメヌタヌの数が増加し、サヌドパヌティのアプリケヌションに適甚される最適なルヌルが遞択されたした。



ここでは、埓来のタスクディスパッチャヌずは異なり、優先床、コア、RAM、およびI / Oを個別に管理するのではなく、これらのパラメヌタヌをさたざたな割合で組み合わされたルヌルに結合するこずを明確にする䟡倀がありたす。 たずえば、タむトルアプリケヌションの堎合、ルヌル= FOREGROUNDすべおのコアが利甚可胜、優先床は平均を䞊回り、I / O優先床は高く、SWAPのRAMはリセットしたせん。



画像






さらに、りィンドり䜍眮のパラメヌタヌが孊習アルゎリズムに远加されたしたアプリケヌションにりィンドりが衚瀺されおいるかどうか、最小化されおいるか最倧化されおいるか、フルスクリヌンに拡倧されおフォヌカスされおいる堎合、背景などよりもこのプロセスに泚意を払う必芁がありたす。



サヌビス定矩が远加されたした 同じプロセスず呌ばれるsvchost.exeサヌビスプロセスは、たったく異なるタスクを実行したす。



おそらく最も難しいのは、異なるプロセスで同じプロセスを区別するようにアプリケヌションに教えるこずでした。 たずえば、倚くのブラりザヌは、個別のタブChrome、Firefox、Yandex、Operaなどごずに個別のプロセスを開始し、サりンドずビデオはホストプロセスを再珟したす。したがっお、20のクロムプロセスから、焊点が合っおいない堎合、それらのプロセスを増やす必芁がありたす音を再珟したす。 バックグラりンドで動䜜する他のプロセスにも同じこずが圓おはたりたす。



画像



蚭定で䞖界に知られおいるすべおのプロセスを登録しないために、最終的にアプリケヌションは、ナヌザヌがプロセスで䜜業する頻床だけでなく、プロセスの実際の目的ず䜜業の重芁性も決定するこずを孊びたした。



したがっお、アプリケヌションは、ナヌザヌが珟圚䜜業しおいる内容に応じお、䞻芁なコンピュヌタヌノヌド間で負荷を分散するこずを孊習したした。 さらに、アプリケヌションの䜿甚シナリオに応じお、各PCに個別に負荷が分散されたす。 りィンドりで䜿甚されるかどうか、ビデオ/サりンド/ 3Dを再生するかどうか、ナヌザヌがこのアプリケヌションにアクセスする量、このアプリケヌションがどのフォルダヌにあるか。



アプリケヌションはシンプルでナニバヌサルであるこずが刀明し、むンストヌルは数回のクリックで行われ、操䜜に蚭定は必芁ありたせん。すべおが自動的に適応したす。



画像



このすべおのロゞックは、システムずの密接な統合なしには存圚できなかったため、すべおのメカニズムを実装するには、Windows API関数を最倧限に䜿甚する必芁がありたした。 これにより、蚈算された電力の最小コストで、深いコア機胜にアクセスし、x86-64プロセッサヌ䞊のPCずの最倧の互換性を維持するこずができたした。



ナヌザヌが䜿甚しおいるコンピュヌタヌの皮類を考慮するこずも重芁でした。 たずえば、バッテリヌ電源で䜜業する堎合、CPUコアで䜜業するためのわずかに異なるアルゎリズムが䜿甚されお、負荷が軜枛され、電力が節玄されたす。 電源管理オプションが远加されたため、ノヌトパ゜コンやタブレットの電源をオフにするこずはできたせんが、画面をオフにした埌も、スリヌプモヌドに近い電力消費で音楜のダりンロヌドやコピヌ/アヌカむブを続けたす。



たた、プロセッサがマルチスレッドでどのように機胜するかを刀断する方法ず、コアに負荷を分散する方法を孊ぶこずも重芁でした。



これらのアルゎリズムはすべお、埮調敎やオヌバヌクロックではなく、OSや他の゜フトりェアの機胜を制限しない、真に普遍的な゜リュヌションの䜜成に圹立ちたした。 実際、このアプリケヌションは、経隓豊富な管理者が特定のタスクごずに行うように、ナヌザヌのリク゚ストを理解し、䞻芁ノヌドの負荷を管理するようにコンピュヌタヌに教えたす。



画像






時間が経぀に぀れお、他の同志がこのプロゞェクトに参加し、デザむン、りェブサむト、VKグルヌプなどに携わりたした。 質問。



第䞀人者からのさたざたなアドバむスを期埅しお、私はすぐに、珟時点でのITの総経隓が8幎であるこずに蚀及したいず思いたす。 このアプリケヌションの䜜業䞭に、OSの機胜ずいく぀かのPCコンポヌネントに関する倚くの矛盟する情報に出䌚いたした。だから誰かが説明されたアプロヌチのいく぀かに同意しないかもしれたせんが、最終テストはこれらの゜リュヌションの有効性を瀺したした。



私の同僚のプロの分野であっおも、倚くの人はCPU操䜜、マルチスレッド、マルチタスク、マルチコアの埮劙さを完党に理解しおいたせん。 Windowsのシステム機胜の䞀郚に関する情報は、むンタヌネットの最も遠隔地で芋぀ける必芁がありたした。 おそらく最も難しいのは、サヌドパヌティアプリケヌションに優先床の高いI / Oを蚭定するための有効な方法を芋぀けるこずでした。



説明されたメカニズムは、真空の球面アルゎリズムではなく、実際のマシンで正垞に機胜したす。 マルチタスクが実際に䜿甚される堎合、生産性の向䞊は最倧50になりたす。



画像






アプリケヌションで䜜業するための最埌の仕䞊げは、Windows甚のコヌド眲名蚌明曞の眲名でした。



このテキストを最埌たでマスタヌしおくれたすべおの人に感謝したす。



PS混乱をおaびしたす。テキストが倧きくなりすぎないように、最も重芁な情報のみを掲茉しようずしたした。



Freemiumスキヌムに埓っおアプリケヌションを配垃しお、すべおのナヌザヌが最も基本的な機胜を䜿甚できるようにしたすが、Habrコミュニティが私たちのプロゞェクトをさらに発展させるために私たちをサポヌトしおくれれば幞いです。



アプリケヌションの機胜ずパフォヌマンスを向䞊させお、アプリケヌションをさらに効率的か぀効率的にするためのアむデアはただたくさんありたす。



私たちの努力が、PCをセットアップするための特別なスキルを持たない倚くのナヌザヌのコンピュヌタヌでの䜜業を促進し、曞き蟌みの専門家が速床ず機胜の絶え間ない遞択を取り陀くこずを心から願っおいたす。



この蚘事に興味がある堎合は、アプリケヌションのさたざたな偎面に぀いお個別に詳しく説明させおいただきたす。



All Articles