퍼포먼스 튜닝
Performance tuning퍼포먼스 튜닝은 시스템 퍼포먼스의 향상입니다.일반적으로 컴퓨터 시스템에서 이러한 활동의 동기는 성능 문제라고 불리며, 이는 실제 또는 예상된 것일 수 있습니다.대부분의 시스템은 어느 정도 성능 저하와 함께 증가된 부하에 반응합니다.높은 부하를 견딜 수 있는 시스템의 능력을 scalability라고 부릅니다.높은 부하를 처리하도록 시스템을 변경하는 것은 퍼포먼스 튜닝의 동의어입니다.
시스템 튜닝은 다음 단계를 따릅니다.
- 문제를 평가하고 허용 가능한 동작을 분류하는 숫자 값을 설정합니다.
- 변경 전에 시스템의 성능을 측정하십시오.
- 퍼포먼스 향상에 중요한 시스템 부품을 특정합니다.이를 병목현상이라고 합니다.
- 시스템의 그 부분을 변경하여 병목 현상을 해소합니다.
- 개조 후 시스템 성능을 측정하십시오.
- 변경으로 퍼포먼스가 향상되면 채택합니다.변경으로 인해 성능이 저하될 경우 원래대로 되돌립니다.
이는 품질보증에서 측정, 평가, 개선, 학습 사이클의 한 예입니다.
퍼포먼스 문제는 시스템이 느리거나 응답하지 않는 것으로 특정될 수 있습니다.이 문제는 일반적으로 시스템 부하가 높아 시스템 일부의 응답 능력이 한계에 도달하기 때문에 발생합니다.시스템 내의 이 제한을 병목현상이라고 합니다.
성능을 향상시키기 위해 몇 가지 기술이 사용됩니다.그 중에는 코드 최적화, 로드 밸런싱, 캐싱 전략, 분산 컴퓨팅, 셀프 튜닝 등이 있습니다.
퍼포먼스 분석
- 퍼포먼스 분석의 메인 기사를 참조해 주세요.
성능 분석(일반적으로 프로파일링이라고 함)은 프로그램 실행 시 수집된 정보를 사용하여 프로그램 동작을 조사하는 것입니다.프로그램의 어느 부분을 최적화할지를 결정하는 것이 목표입니다.
프로파일러는 프로그램 실행 시 동작, 특히 함수 호출 빈도 및 지속 시간을 측정하는 성능 분석 도구입니다.성능 분석 도구는 적어도 1970년대 초반부터 존재했습니다.프로파일러는 출력 유형 또는 데이터 수집 방법에 따라 분류할 수 있습니다.
퍼포먼스 엔지니어링
- 퍼포먼스 엔지니어링의 메인 기사를 참조해 주세요.
퍼포먼스 엔지니어링은 비즈니스 수익 증가, 시스템 장애 감소, 프로젝트 지연, 자원이나 작업의 불필요한 사용 방지 등 설계된 시스템의 비기능적 요건을 충족하기 위해 사용되는 역할, 스킬, 활동, 프랙티스, 도구 및 성과물을 포함하는 분야입니다.
다양한 방법론에서 몇 가지 공통 활동이 식별되었다.
- 중요한 비즈니스 프로세스의 특정.
- 사용 사례 및 시스템 용량에 대한 프로세스 상세.
- 퍼포먼스 튜닝을 포함한 시스템 구축
- 구축된 시스템의 도입.
- 시스템 도입 후에 실행되는 액티비티를 포함한 서비스 관리.
코드 최적화
최적화에는 루프 내에서가 아니라 루프 전에 한 번 작업이 수행되도록 코드를 개선하거나 단순 선택 정렬에 대한 호출을 보다 복잡한 퀵 정렬 알고리즘에 대한 호출로 대체하는 방법이 있습니다.
구성 최적화
빅 데이터 시스템과 같은 최신 소프트웨어 시스템은 여러 프레임워크(예: Apache Storm, Spark, Hadoop)로 구성됩니다.이러한 프레임워크 각각은 이러한 애플리케이션의 성능에 상당한 영향을 미치는 수백 개의 구성 매개 변수를 노출합니다.일부 최적화(조정)에는 이러한 애플리케이션에 가장 적합한 구성을 찾는 애플리케이션의 성능 향상이 포함됩니다.
캐싱 전략
캐싱은 데이터 액세스 속도가 느려서 발생하는 성능 병목 현상을 제거하기 위한 기본적인 방법입니다.캐싱은 자주 사용하는 정보를 고속 메모리에 저장함으로써 성능을 향상시키고 액세스 시간을 단축하고 계산을 반복하지 않도록 합니다.캐싱은 참조 위치의 원칙이 적용되는 상황에서 성능을 향상시키는 효과적인 방법입니다.어떤 데이터가 점차 더 빠른 스토리지에 저장되는지 결정하는 데 사용되는 방법을 총칭하여 캐싱 전략이라고 합니다.예를 들어 ASP가 있습니다.NET 캐시, CPU 캐시 등
로드 밸런싱
시스템은 각각 요청을 처리할 수 있는 독립된 컴포넌트로 구성될 수 있습니다.이러한 시스템 중 하나(또는 소수의 시스템)에 의해 모든 요구가 처리되고 다른 시스템이 아이돌 상태로 남아 있는 경우, 중고 시스템이 사용 가능하게 될 때까지 대기하는 데 시간이 낭비됩니다.모든 시스템을 동일하게 사용하도록 배치하는 것을 로드 밸런싱이라고 하며 전체적인 성능을 향상시킬 수 있습니다.
로드밸런싱은 잠재적인 모든 후보의 사용 상황 및 각 머신이 수행해야 할 동작 유형에 적합한지 여부에 따라 작업을 실행할 머신을 지능적으로 선택함으로써 분산 시스템에서 더 많은 이점을 얻기 위해 자주 사용됩니다.
분산 컴퓨팅
분산 컴퓨팅은 최신 CPU 아키텍처에서 병렬 실행 가능성을 높이기 위해 사용됩니다. 병렬 처리의 성능 이점을 얻으려면 분산 시스템의 사용이 필수적입니다.고성능 클러스터 컴퓨팅은 성능 향상을 위해 분산 시스템을 사용하는 것으로 잘 알려져 있습니다.
분산 컴퓨팅 및 클러스터링은 지연 시간에 부정적인 영향을 미치는 동시에 데이터베이스 시스템 등의 공유 리소스에 대한 부하가 증가할 수 있습니다.지연 시간을 최소화하고 병목 현상을 방지하기 위해 분산 컴퓨팅은 분산 캐시를 통해 큰 이점을 얻을 수 있습니다.
셀프 튜닝
자가 조정 시스템은 목표 기능(일반적으로 효율성 극대화 또는 오류 최소화)의 최대화 또는 최소화를 위해 자체 실행 매개 변수를 최적화할 수 있습니다.자가 조정 시스템은 일반적으로 비선형 적응 제어를 나타냅니다.자가 조정 시스템은 수십 년 동안 항공우주 산업의 특징이었는데, 비선형 프로세스에 대한 최적의 다변량 제어를 생성하기 위해 이러한 피드백이 필요하기 때문입니다.
병목 현상
병목현상은 최대 용량인 시스템의 일부입니다.시스템의 다른 부분은 작업이 수행되기를 기다리는 동안 유휴 상태가 됩니다.
보틀 넥을 찾아 제거하는 과정에서 보틀 넥을 제거하기 전에 샘플링 등을 통해 보틀 넥의 존재를 증명하는 것이 중요합니다.추측하고 싶은 강한 유혹이 있다.추측은 종종 틀리고 추측에만 투자하는 것 자체가 [citation needed]병목현상이 될 수 있습니다.
