지난회사를 퇴사한지 어언 반년이 지났건만 아직도 연계되어서 오는 연락들....
쩝....뭐 개인적으로야 기분이 썩 나쁘지않다만서도 아직도 굴레를 벗어나지 못한 향수를 느끼는걸 보면 뭐랄까? 뭐라 설명해야하지 ㅎ
아무튼 한두건정도 연달아 문의한 내용에 대해서 포스팅하려한다.
환경
RedHat Enterprise Linux 5
문제
/var/log/messages 에러메시지중, 간헐적으로 kernel: mtrr: type mismatch for e0000000,4000000 old: uncachable new: write-combining 메시지가 남겨지는 이유?
근본원인
먼저 접근방법에 대해 논의전, MTRRs(Memory Type Range Registers)에 대해 알아야 한다. 간략하게 설명하면 MTRR을 지원하는 프로세스에게 메모리 영역에 대한 접근방법을 통제할 수 있도록 하는 기능으로 프로세서 모델에 따라 지원여부 및 방법이 다르다고 볼수 있다.
다음과 같은 접근 방법을 이용할 수 있습니다.
* uncached
* write-through
* write-combining
* write-protect
* write-back
이 중 write-combining 모드의 경우, 말 그대로 여러 write transfers를 묶어 하나의 큰 transfer를 만들수 있도록 하여 성능을 향상시킬 수 있는데, graphic card등에서 이용된다.
MTRR 영역은 하드웨어서 제공하는 제한적인 리소스이다. X 서버는 이 MTRR을 framebuffer로 사용할수 있는데, 만약 MTRR 영역을 원하는대로 이용할 수 없을 경우 다음과 같은 경고가 출력될 수 있다.
Nov 14 23:31:52 LGEAFAP01 kernel: mtrr: type mismatch for e0000000,4000000 old: uncachable new: write-combining
Nov 14 23:32:01 LGEAFAP01 kernel: mtrr: type mismatch for e0000000,4000000 old: uncachable new: write-combining
Nov 14 23:32:10 LGEAFAP01 kernel: mtrr: type mismatch for e0000000,4000000 old: uncachable new: write-combining
보통은 무시하고 넘어갈 수 있으나, 일부의 경우 X 서버가 죽는등의 문제가 발생하고 있다.
최근 메모리를 증설하시면서 MTRR 영역에 변동이 있었던 것으로 생각된다.
이는 하드웨어적인 제한이므로 소프트웨어에서 처리할 수 있는 방법은 없다. 다음은 시도해볼 수 있는 workaround 이다.
Workaround
1. BIOS에서 Video Memory 용량을 변경
2. BIOS에서 "MTRR Mapping" 설정을 지원할 경우 이를 변경
'Linux is.... > TIP' 카테고리의 다른 글
레드햇, Docker와 손잡다. (0) | 2014.09.03 |
---|---|
[RHEL] RedHat Enterprise Linux 7 Beta (0) | 2014.01.01 |
linux(이하. RHEL)버전별 넘버에 대한 내용 (0) | 2013.11.17 |
What is the difference between 32-bit and 64-bit? (0) | 2013.11.17 |