CCoW: 워크로드의 공간적 지역성을 고려한 쓰기 시 복사 최적화 6부
Apr 03, 2024
워크로드 특성에 따라 최적의 영역 크기와 임계값이 달라집니다. 워크로드의 영향을 평가하기 위해 다양한 지역의 워크로드에 대한 CCoW의 성능을 측정합니다. 구체적으로, 지역성 정도를 결정하는 Zipfdistribution의 매개변수를 변경했습니다.
인간의 기억력과 작업량 사이에는 밀접한 관계가 있습니다. 많은 양의 정보를 처리하거나 복잡한 작업을 완료해야 할 때 우리의 두뇌는 필요한 모든 정보가 올바르게 처리되고 저장되도록 매우 경계해야 합니다. 뇌의 뉴런은 끊임없이 연결되고 통신하며, 이는 우리가 생각하고 기억하는 방식에 큰 영향을 미칩니다.
많은 양의 정보를 처리하고 복잡한 작업을 완료하면 기억력과 인지 능력이 저하될 수 있지만, 연구에 따르면 적절한 훈련과 연습을 통해 기억력과 생산성을 크게 향상시킬 수 있는 것으로 나타났습니다. 예를 들어, 실험을 통해 과학자들은 광범위한 기억력 훈련과 연습을 통해 사람들이 기억력과 작업 효율성을 크게 향상시킬 수 있다는 사실을 발견했습니다.
이러한 관점에서 볼 때, 기억력과 업무 효율성을 향상시키려는 사람들에게는 지속적인 연습과 훈련이 매우 중요하다는 결론을 내릴 수 있습니다. 또한 스트레스는 기억력과 생산성을 저하시킬 수 있으므로 긍정적인 태도를 유지하십시오.
요약하자면, 워크로드와 메모리 사이에는 강한 상관관계가 있습니다. 집중력을 유지하고 정기적으로 훈련하고 연습하며 긍정적인 태도를 유지한다면 기억력과 작업 효율성을 크게 향상시킬 수 있습니다. Cistanche Deserticola는 또한 기억력과 학습에 중요한 아세틸콜린 및 성장 인자 수치 증가와 같은 신경 전달 물질의 균형을 조절할 수 있습니다. 또한 Cistanche Deserticola는 혈류를 개선하고 산소 전달을 촉진하여 뇌에 충분한 영양분과 에너지를 공급하여 뇌 활력과 지구력을 향상시킬 수 있습니다.

액세스는 {{0}}일 때 균일하게 분산되며, 값이 높을수록 워크로드가 나타내는 지역성 수준이 높아집니다. 1.0이면 작업의 약 80%가 데이터의 20%와 관련됩니다.
파레토 원칙에 따르면 이러한 지역성 정도는 여러 실제 워크로드에서 흔히 발견됩니다. 1.0, 0.9, 1.1의 세 가지 다른 값으로 측정합니다. 여기서 1.0은 기준이고 0.9와 1.1은 각각 낮은 지역 및 높은 지역성 워크로드.
원래 CoW 성능은 워크로드에 따라 달라지므로 워크로드의 포크 기간은 원래 CoW 설정으로 측정된 시간에 따라 설정되었습니다. 예를 들어 원래 CoW 구성이 포크 후 정상 성능을 복구하는 데 10초가 필요한 경우 다른 CCoW 구성도 10초마다 하위 프로세스를 포크합니다.
그림 5에는 다양한 지역성 워크로드를 사용하는 CCoW의 평균 처리량과 메모리 사용량이 요약되어 있습니다. 낮은 지역성 워크로드의 경우 작은CCoW 임계값이 있는 구성은 큰 임계값이 있는 구성보다 더 나은 성능을 나타냅니다. 'CCoW-all'은 낮은 지역성 워크로드에서도 원래 CoW보다 15% 더 뛰어난 성능을 발휘합니다. 이는 프리카피의 효율성 때문이다. 낮은 지역성 워크로드에서는 액세스가 전체 프로세스 주소 공간에 분산되므로 메모리의 상당 부분이 복제되어야 합니다. 실제로 전체 영역을 복사하면 오버헤드가 적게 필요한 메모리를 미리 복사하게 됩니다.

따라서 임계값이 작을수록 지역성이 낮은 작업 부하를 갖는 프로그램의 성능이 높아집니다. 그러나 이러한 추세는 지역성이 높은 워크로드에서는 반대 효과를 나타냅니다. 지역성이 높은 워크로드에서는 많은 액세스가 몇 개의 페이지에 집중됩니다.
이는 Copy-On-Write 전체에서 메모리의 작은 부분만 복제하면 된다는 것을 의미합니다. 페이지 부재 시 전체 영역을 복사하는 것은 전혀 액세스되지 않은 페이지를 복사하는 경향이 있습니다.
이는 일시적인 오버헤드만 발생시켜 지역성이 높은 워크로드의 성능을 저하시킵니다. 결과적으로 CCoW-all은 높은 지역성 워크로드에서 최악의 성능을 나타냅니다. 다른 구성은 기본 워크로드와 유사한 패턴을 보여줍니다. 성능은 임계값 80%에서 최고에 달하고 임계값이 작아질수록 감소합니다.

벤치마크의 메모리 사용량은 워크로드의 지역성 정도에 관계없이 일관된 추세를 보여줍니다. 'CCoW-all'은 항상 포크 후 메모리의 모든 페이지를 복사하기 때문에 항상 가장 높은 메모리 사용량을 나타냅니다. 게다가 메모리 공간은 임계값에 반비례합니다. 임계값이 작을수록 벤치마크에서 더 많은 메모리를 사용합니다.
메모리 증폭은 원래 CoW 구성에 비해 최대 10%만 증가했는데, 이는 적당한 범위에 있다고 판단됩니다. CCoW의 성능 분석과 더불어 THP(Transparent Huge Page)와 CCoW의 성능을 비교합니다. 리눅스의 계획.
THP는 작은 페이지에서 발생하는 오버헤드를 완화하는 것을 목표로 한다는 점에서 CCoW와 다소 유사합니다. 그림 5의 'CoW-THP'는 THP 지원 구성의 성능을 나타냅니다. THP 지원 시스템은 결함이 있는 페이지를 복사하기 전에 대용량 페이지를 기본 페이지로 분할하여 CoW를 처리하며 THP를 최적화하는 다른 체계도 마찬가지입니다[12-15,17].
THP가 기본 'CoW 전용' 구성보다 더 나은 성능을 보이는 것을 확인할 수 있습니다. 우리는 거대한 페이지를 사용한 주소 변환의 효율성 증가로 인해 성능이 향상되었다고 생각합니다.
구체적으로 THP 방식에 따르면 프로세스 주소 공간의 hot 부분이 기본 페이지로 분할되어 'CoW-only' 구성과 동일한 성능을 제공할 가능성이 높습니다. 그러나 프로세스 주소 공간의 콜드 부분은 분할되지 않고 거대한 페이지로 유지됩니다. 따라서 이는 애플리케이션 성능을 어느 정도 향상시킬 수 있습니다.
그러나 THP는 CCoW만큼 성능 향상을 제공하지 않습니다. 그림 6은 평가 중 처리량의 누적 분포를 보여줍니다. x축은 초당 작업 처리량을 나타내고 y축은 성능의 누적 비율을 나타냅니다. 처리량 값. CCoW-all을 제외하고 구성에 관계없이 자주 관찰되는 세 가지 처리량 범위를 찾을 수 있습니다.
{{0}} 대 0.1의 누적 비율에서 첫 번째 그룹은 포크 직후 벤치마크 성능이 저하되는 기간을 나타냅니다. 그런 다음 누적 비율이 0.1 대 0.7인 두 번째 그룹에서와 같이 성과가 초과 근무를 회복합니다.
{{0}.7~1.0 범위의 나머지 누적 비율은 페이지 오류가 발생하지 않는 액세스에서 발생합니다. 전반적으로 CCoW 구성은 원래 CoW보다 성능 저하가 더 심각한 경향이 있습니다. 특히, 원래 CoW 체계의 높은 지역성 워크로드로 인해 처리량은 포크 직후 초당 약 1900K 작업으로 떨어집니다.

그런 다음 초당 2500K 작업 범위까지 천천히 증가합니다. CCoW를 사용하면 성능이 초당 1700K 작업 범위로 더 떨어졌습니다. 그러나 성능 회복 속도는 더 빨랐으며, 대부분의 경우(대부분 누적 그래프의 오른쪽) 원래 CoW보다 더 나은 성능을 보여주었습니다. 다른 워크로드에서도 유사한 추세를 관찰할 수 있으며 CCoW-all 구성은 극단적인 동작을 보여줍니다. 포크 직후에는 성능이 크게 떨어지고 낮게 유지되는 반면 대부분의 주소 공간은 확산 액세스로 복사됩니다.
그러나 그 이후에는 페이지 폴트가 거의 발생하지 않으므로 대부분의 액세스는 페이지 폴트 없이 처리됩니다. 따라서 CCoW에서는 처리량은 bimodal 분포를 갖는다. 이번 평가를 통해 CCoW는 Common Case를 최적화하여 최적의 성능을 제공한다는 것을 확인했다.
그러나 더 나은 성능 특성을 얻으려면 성능 저하를 해결해야 합니다. 이를 위해 현재 포크 직후 복사되는 데이터의 양을 조절하는 작업을 진행하고 있습니다.

4.2. 현실적인 워크로드에 대한 CCoW 성능
현실적인 워크로드에서 제안된 CCoW를 평가하기 위해 Redis와 YCSB를 사용했습니다. Redis는 인터넷 규모 애플리케이션을 가속화하는 데 널리 사용되는 인메모리 키-값 데이터베이스입니다.
우리는 YCSB 벤치마크를 사용하여 Redis 인스턴스에 키-값 쌍을 채우고 이에 대한 작업을 수행했습니다. 특히 Redis 인스턴스는 기본 YCSB 구성을 사용하여 10GB의 키-값 쌍으로 초기화됩니다.
모든 키와 값의 크기는 각각 23바이트와 100바이트이며, 각 키에는 10개의 값 필드가 포함되어 있습니다. Redis 인스턴스를 채운 후 스냅샷을 생성하도록 구성한 다음 YCSB를 통해 업데이트 작업을 제공했습니다.
키-값 액세스에 시간적 지역성을 통합하기 위해 매개변수 값 1.0을 사용하여 Zip 분포에 따라 대상 키를 선택하도록 YCSB 워크로드를 설정했습니다.
100GB의 업데이트를 진행하면서 YCSB 벤치마크 보고서의 1초당 처리량을 수집했습니다. 그림 7에는 시스템이 원래 CoW 또는 CCoW를 사용하도록 구성된 경우 Redis 인스턴스의 평균 처리량 및 메모리 사용량이 요약되어 있습니다. 영역 크기는 2MB를 사용했으며 모든 결과 값은 CoW의 값으로 정규화되었습니다.

전반적으로 모든 CCoW 구성은 적용 범위 임계값에 관계없이 원래 CoW보다 성능이 뛰어났습니다. 마찬가지로 위에서 분석한 것처럼 성능은 쓰기 중 복사 완화로 인한 성능 향상과 추가 페이지 복사 오버헤드 간의 균형을 통해 결정되었습니다. 임계값이 높으면 소수의 영역만 복사되므로 최적화 기회와 메모리 오버헤드가 모두 작아집니다.
임계값이 85% 미만으로 감소하면 메모리 공간이 증가하고 더 많은 오버헤드가 발생합니다. 결과적으로 CCoW의 평균 처리량은 Coverage Threshold에 따라 달라지지만 원래 CoW에 비해 최대 5%의 성능 향상을 보여줍니다.
Redis 및 YCSB 워크로드의 경우 THP에서는 약간의 성능 향상만 관찰되었습니다. 이는 워크로드에서 쓰기 액세스가 프로세스 주소 공간 전체에 분산되어 있고 CoW를 처리하는 동안 대용량 페이지가 기본 페이지로 효과적으로 분할되기 때문입니다.
Redis 프로세스는 몇 개의 거대한 페이지만 가질 수 있으므로 성능은 기본 구성과 유사합니다. 이 결과는 THP 기반 접근 방식이 쓰기 집약적인 워크로드에서는 덜 효과적이며 CCoW가 THP보다 성능이 우수하다는 것을 보여줍니다.
지역성이 높은 영역을 식별하는 메커니즘의 정확성을 평가하기 위해 복사된 각 페이지에 대한 복사 생성 메커니즘의 이유를 분류했습니다. 구체적으로 복사된 전체 페이지 중 복사된 페이지의 비율을 수집했습니다. 사전 복사 비율이 x%인 경우 총 메모리 공간을 y%만큼 늘리면 y를 x로 나누어 불필요한 사전 복사 비율을 계산할 수 있습니다.
예를 들어 CCoW-80 구성에서는 복사된 페이지의 26.9%가 복사되어 메모리 공간이 6.7% 증가합니다. 이는 사전 복사 페이지의 24.9%가 참조되지 않음을 의미합니다. 표 1에는 계산이 요약되어 있습니다. 불필요한 프리카피 비율은 23.4%에서 35.6% 사이이며, 평가 결과를 통해 제안하는 방식이 지역성이 높은 지역을 정확하게 포착한다는 결론을 내릴 수 있다.

5. 결론
본 연구에서는 공간적 집약성이 높은 워크로드에 최적화된 Copy-On-Write 방식인 CCoW를 제안했습니다. CCoW는 프로세스 주소 공간을 여러 지역으로 나누고 커버리지를 통해 지역성을 추정합니다.
지역성이 높은 지역에 쓰기를 수행하면 페이지 폴트 처리기가 근처 페이지를 미리 복사하게 됩니다. 사전 복사 후 적용 범위를 올바르게 추적하기 위해 CCoW는 페이지 테이블의 더티 비트를 활용합니다. 벤치마크를 통한 평가를 통해 제안된 방식이 작은 오버헤드로 높은 지역성을 식별할 수 있어 수정 없이 애플리케이션의 성능 향상이 가능하다는 것이 확인되었습니다.
앞서 언급했듯이 복사할 데이터의 양이 많아 포크 직후에는 성능이 크게 저하됩니다. 현재 우리는 사전 복사 속도를 제한하고 사전 복사를 비동기식으로 수행하여 성능 저하를 관리하는 작업을 진행하고 있습니다. 또한 현재 워크로드의 특성에 따라 구성 매개변수를 조정하는 적응형 메커니즘을 통합할 계획입니다.
저자 기여: Conceptualization, MH 및 S.-HK; 방법론, MH; 소프트웨어, MH, 검증, MH 및 S.-HK; 공식 분석, MH 및 S.-HK; 조사, MH 및 S.-HK; 자원, S.-HK; 데이터 큐레이션, MH; 작문 원본 초안 준비, MH; 집필-검토 및 편집, MH 및 S.-HK; 시각화, MH; 감독, S.-HK; 프로젝트 관리, S.-HK; 자금 조달, S.-HK 모든 저자는 출판된 원고 버전을 읽고 동의했습니다.

연구비: 이 연구는 한국 정부(20ZS1310)의 지원을 받는 전자통신연구원(ETRI) 보조금과 교육부의 지원을 받는 한국연구재단의 BK21 FOUR 프로그램(NRF5199991014091)의 지원을 받았습니다.
기관 검토 위원회 성명: 해당 사항 없음.
사전 동의서: 해당 사항 없음.
데이터 가용성 설명: 해당 사항 없음.
이해 상충: 저자는 이해 상충을 선언하지 않습니다.
참고자료
1. Gorman, M. Linux 가상 메모리 관리자 이해; 프렌티스 홀: 어퍼 새들 리버, 뉴저지, 미국, 2007.
2. 보베, DP; Cesati, M. Linux 커널 이해; 오라일리: 미국 매사추세츠주 뉴턴, 2001.
3. Love, R. Linux 커널 개발, 3판; 애디슨 웨슬리: 미국 매사추세츠주 보스턴, 2010년.
4. 연구소, R. Redis. 온라인 이용 가능: https://github.com/redis/redis (2021년 6월 7일 접속)
5. Silberschatz, A.; 갈빈, PB; Gagne, G. 운영 체제 개념; Addison-Wesley Longman Publishing Co., Inc.: 미국 매사추세츠주 보스턴, 2018.
6. 해리스, SL; Harris, D. 디지털 디자인 및 컴퓨터 아키텍처; 모건 카우프만: 미국 매사추세츠주 벌링턴, 2022년.
7. Abi-Chahla, F. Intel Core i7(Nehalem): AMD의 아키텍처? 온라인 이용 가능: https://www.tomshardware.com/reviews/Intel-i7-nehalem-cpu,2041.html(2021년 10월 18일 액세스)
8. 팜, B.; 바타차르지, A.; 에커트, Y.; Loh, GH 페이지 번역에서 클러스터링을 활용하여 TLB 범위를 늘립니다. 2014년 2월 15~19일 미국 플로리다 주 올랜도에서 개최된 2014 IEEE 20차 고성능 컴퓨터 아키텍처에 관한 국제 심포지엄(HPCA'14) 진행 중; 558~567쪽.
For more information:1950477648nn@gmail.com






