최근에 Linux는 해당 물리적 주소의 해당 데이터가 교체될 때 TLB 캐시를 플러시하여 TLB 활용도가 낮다는 소식을 들었습니다. 모든 운영 체제가 이 작업을 수행하는지 모르겠습니다.
이것이 사실이라면 RAM을 늘리고 컨텍스트 전환을 피하면 캐시가 TLB에 유지됩니까?
답변1
Linux 커널은 TLB와 TLB 캐시를 동일한 방식으로 처리하는 것 같습니다. 아키텍처 독립적 수준에서는 부분 또는 전체 TLB 캐시 AFAIK를 플러시하는 것과 같은 것이 없습니다. 예를 들어, 가상 머신이 페이징되고 필요한 경우 하드웨어 관련 코드를 트리거하는 이 작업에 대한 몇 가지 후크가 있습니다. CPU에 따라 커널은 페이지 출력당 여러 페이지 플러시를 수행할 수 있고, CPU는 페이지 플러시 범위를 지원하거나 둘 다를 지원하지 않으며, 커널은 가장 비용이 많이 드는 플러시를 사용하여 전체 캐시를 플러시합니다.
이 주제에 관한 두 가지 흥미로운 기사가 있습니다.
- 페이지 테이블 관리(화면에 이상한 문자가 나타나면 페이지 인코딩에 ISO-8859-1을 강제 적용해 보세요)
- 커널 문서 - Linux에서의 캐시 및 TLB 플러시
답변2
데이터 교환은 TLB 행을 삭제하는 것(이후에는 쓸모가 없음)보다 훨씬 비쌉니다. 그리고 전체 TLB를 플러시하는 것도 아마도 훨씬 저렴할 것입니다.
Linux 전문가는 절대적으로 성능 괴물입니다. 그들이 당신이 말하는 대로 한다면 이는 영향을 받은 아키텍처가 더 나은 것을 허용하지 않기 때문입니다(또는 단순히 중요하지 않기 때문입니다).