Кіріспе
Перформансты көйлеу – жүйенің өнімділігін жақсарту. Әдетте компьютерлік жүйелерде мұндай әрекеттің себебі өнімділік проблемасы болып табылады, ол нақты немесе болжамды болуы мүмкін. Көптеген жүйелер жүктеменің артуына өнімділіктің белгілі бір деңгейде төмендеуімен жауап береді. Жүйенің жоғары жүктемені қабылдау қабілеті масштабталу делінеді, ал жүйені жоғары жүктемені басқару үшін өзгерту перформансты көйлеумен бірдей. Жүйелі көйлеу келесі қадамдарды қамтиды: Проблеманы бағалау және қабылданатын мінез-құлықты сипаттайтын сандық мәндерді анықтау. Өзгерістер енгізілгенге дейін жүйенің өнімділігін өлшеу. Жүйенің өнімділігін жақсарту үшін маңызды бөлігін анықтау. Бұл бөтелкелік тосқауыл деп аталады. Бөтелкелік тосқауылды жою үшін жүйенің осы бөлігін өзгерту. Өзгерістерден кейін жүйенің өнімділігін өлшеу. Егер өзгерістер өнімділікті жақсартса, оны қабылдау. Егер өзгерістер өнімділікті нашарлатса, бастапқы күйіне қайтару. Бұл сапаны қамтамасыз етуден сабақ алған бағалау-жақсарту циклының мысалы. Өнімділік проблемалары баяу немесе жауап бермейтін жүйелер арқылы анықталуы мүмкін. Бұл әдетте жүйеге жоғары жүктеме салдарынан болады, бұл жүйенің кейбір бөліктерінің жауап беру қабілетінің шегіне жетуіне әкеледі. Жүйедегі осы шек бөтелкелік тосқауыл деп аталады. Өнімділікті жақсарту үшін бірнеше техникалар қолданылады. Олардың ішінде кодты оңтайландыру, жүктемені бөлу, кэштеу стратегиясы, таратылған есептеу және өзін-өзі көйлеу бар.
Assess the problem and establish numeric values that categorize acceptable behavior. Measure the performance of the system before modification. Identify the part of the system that is critical for improving the performance. This is called the bottleneck. Modify that part of the system to remove the bottleneck. Measure the performance of the system after modification. If the modification makes the performance better, adopt it. If the modification makes the performance worse, put it back the way it was. This is an instance of the measure evaluate improve learn cycle from quality assurance. A performance problem may be identified by slow or unresponsive systems. This usually occurs because high system loading, causing some part of the system to reach a limit in its ability to respond. This limit within the system is referred to as a bottleneck. A handful of techniques are used to improve performance. Among them are code optimization, load balancing, caching strategy, distributed computing and self tuning.
Кодты оңтайландыру
Оптимизация (компьютерлік ғылым) туралы толық мақаланы қараңыз. Кейбір оңтайландыруларға кодты жақсарту арқылы цикл ішінде емес, циклдан бұрын бір рет жұмыс жасау, немесе қарапайым таңдау сұрыптауын шақыруды жылдам сұрыптаудың күрделі алгоритмімен алмастыру кіруі мүмкін.
Конфигурацияны оңтайландыру
Қазіргі заманғы бағдарламалық жүйелер, мысалы, үлкен деректер жүйелері, бірнеше фреймворктерді (мысалы, Apache Storm, Spark, Hadoop) қамтиды. Осы фреймворктердің әрқайсысы жүздеген конфигурациялық параметрлерді ұсынады, олар мұндай қолданбалардың өнімділігіне елеулі әсер етеді. Кейбір оңтайландырулар (тюнинг) – бұл қолданбалар үшін ең қолайлы конфигурацияны тауып, осы арқылы қолданбаның жұмысын жақсарту.
Кэштеу стратегиясы
Кэштеу – деректерге баяу қол жеткізуден туындайтын өнімділік шектеулерін жоюдың негізгі әдісі. Кэштеу, жиі қолданылатын ақпаратты жоғары жылдамдықты жадта сақтау арқылы өнімділікті жақсартады, қол жеткізу уақытын қысқартады және есептеулерді қайталауды болдырмайды. Деректерге жиі жүгіну принципі қолданылатын жағдайларда өнімділікті жақсартудың тиімді жолы – кэштеу. Деректерді жылдамдап сақтау үшін қолданылатын әдістердің жиынтығы кэштеу стратегиялары деп аталады. Мысалдар: ASP.NET кэші, CPU кэші және т.б.
Жүк тепе-теңдігін сақтау
Жүйе тәуелсіз компоненттерден тұруы мүмкін, олардың әрқайсысы сұраныстарды өңдеуге қабілетті. Егер барлық сұраныстар осы жүйелердің бірінде (немесе аздаған санында) өңделсе, ал қалғандары бос тұрса, онда қолданылып жатқан жүйенің босауы күтіліп, уақыт ысырап болады. Барлық жүйелерді теңдей пайдалануды қамтамасыз ету жүктемені бөлу деп аталады және ол жалпы өнімділікті арттыруға мүмкіндік береді. Жүктемені бөлу жиі таратылған жүйеден қосымша пайда алу үшін қолданылады, бұл жағдайда операцияны орындау үшін қай машинаны таңдау барлық мүмкін үміткерлердің қаншалықты жүктелгендігіне және әрбір машинаның операция түріне қаншалықты сәйкес келетіндігіне байланысты интеллектуалды түрде анықталады.
Таратылған есептеу
Бөлінген есептеулер қазіргі заманғы процессор архитектураларында параллель орындалу мүмкіндігін арттыруға қолданылады. Қол жетімді параллелизмнен өнімділік артықшылығын алу үшін бөлінген жүйелерді пайдалану қажет. Жоғары өнімділік кластерлік есептеулер – өнімділікті жақсарту үшін бөлінген жүйелерді пайдаланудың кең таралған түрі. Бөлінген есептеулер және кластерлеу дерекқоры жүйелері сияқты ортақ ресурстарға жүктемені арттырса, сонымен бірге жауап беру уақытын ұзартуы мүмкін. Жауап беру уақытын азайту және тұйықтардың алдын алу үшін бөлінген есептеулер бөлінген кэштерден айтарлықтай пайда көреді.
Өзін-өзі реттеу
Өзін-өзі баптайтын жүйе мақсатты функцияны барынша орындауды немесе азайту үшін өзінің ішкі жұмыс параметрлерін оңтайландыруға қабілетті; әдетте тиімділікті арттыру немесе қателерді азайту. Өзін-өзі баптайтын жүйелер әдетте сызықтық емес бейімделуші басқаруды көрсетеді. Өзін-өзі баптайтын жүйелер ондаған жылдар бойы аэроғарыш өнеркәсібінің маңызды ерекшелігі болып табылады, себебі сызықтық емес процестер үшін оңтайлы көп айнымалы басқаруды жасау үшін мұндай кері байланыс қажет.
Қиындықтар
Жүйенің шектеулі бөлігі – жүйенің толық қуатпен жұмыс істейтін жері. Жүйенің басқа бөліктері оның міндетін орындауын күтіп бос тұрады. Шектеулі бөліктерді анықтап жою процесінде, оларды жоюға тырысудан бұрын олардың бар екенін өлшеу арқылы дәлелдеу маңызды. Дұрыс емес болжамдар жасауға құштарлық таныту орынды емес. Болжамдар көбінесе қате болады.