Узкое место в инженерии: определение, причины и способы устранения. Ограничение производительности системы одной компонентой – как найти и оптимизировать.
Сравнивайте с английским: нажмите на абзац — оригинал откроется в окне. Кнопка EN под абзацем показывает его прямо в тексте.
Содержание
Введение
Феномен в инженерии
Phenomenon in engineering
В инженерии, "узкое место" – это явление, при котором производительность или пропускная способность всей системы серьезно ограничивается одним компонентом. Этот компонент иногда называют точкой узкого места. Термин метафорически происходит от горлышка бутылки, где скорость потока жидкости ограничена его горлышком. Формально, узкое место лежит на критическом пути системы и обеспечивает минимальную пропускную способность. Конструкторы систем обычно стараются избегать узких мест, а также прилагают значительные усилия для их выявления и оптимизации. Узким местом может быть, например, процессор, канал связи, программное обеспечение для обработки данных и т.д.
In engineering, a bottleneck is a phenomenon by which the performance or capacity of an entire system is severely limited by a single component. The component is sometimes called a bottleneck point. The term is metaphorically derived from the neck of a bottle, where the flow speed of the liquid is limited by its neck. Formally, a bottleneck lies on a system's critical path and provides the lowest throughput. Bottlenecks are usually avoided by system designers, also a great amount of effort is directed at locating and tuning them. Bottleneck may be for example a processor, a communication link, a data processing software, etc.
Узкие места в программном обеспечении
В компьютерном программировании выявление узких мест (иногда называемых "горячими точками" – участками кода, которые выполняются наиболее часто, то есть имеют наибольшее число выполнений) называется анализом производительности. Уменьшение времени выполнения обычно достигается с помощью специализированных инструментов, известных как анализаторы производительности или профилировщики. Цель состоит в том, чтобы заставить эти конкретные участки кода выполняться как можно быстрее, чтобы повысить общую эффективность алгоритма.
In computer programming, tracking down bottlenecks (sometimes known as "hot spots" sections of the code that execute most frequently i. e. have the highest execution count) is called performance analysis. Reduction is usually achieved with the help of specialized tools, known as performance analyzers or profilers. The objective being to make those particular sections of code perform as fast as possible to improve overall algorithmic efficiency.
Внутренние узлы в максимально-минимальной справедливости
В сети связи иногда требуется максимальная справедливость распределения ресурсов, обычно в противовес базовой политике "первый пришел – первого обслужили". При максимальной справедливости максимизируется скорость передачи данных между любыми двумя узлами, но только за счет потоков данных с равной или большей стоимостью. Иными словами, при возникновении сетевой перегрузки на любой поток данных влияют только потоки с меньшей или равной скоростью передачи. В этом контексте узким звеном для данного потока данных является канал, который полностью загружен (насыщен), и среди всех потоков, использующих этот канал, данный поток данных достигает максимальной скорости передачи по всей сети. Следует отметить, что это определение существенно отличается от общепринятого значения термина "узкое место". Также следует отметить, что это определение не исключает возможности того, что один канал будет узким звеном для нескольких потоков. Распределение скоростей передачи данных является максимально справедливым, если и только если для любого потока данных между двумя узлами существует хотя бы одно узкое звено.
In a communication network, sometimes a max min fairness of the network is desired, usually opposed to the basic first come first served policy. With max min fairness, data flow between any two nodes is maximized, but only at the cost of more or equally expensive data flows. To put it another way, in case of network congestion any data flow is only impacted by smaller or equal flows. In such context, a bottleneck link for a given data flow is a link that is fully utilized (is saturated) and of all the flows sharing this link, the given data flow achieves maximum data rate network wide. Note that this definition is substantially different from a common meaning of a bottleneck. Also note, that this definition does not forbid a single link to be a bottleneck for multiple flows. A data rate allocation is max min fair if and only if a data flow between any two nodes has at least one bottleneck link.