2013-10-17 4 views
2

에서 sysfs를의/SYS/장치/시스템/메모리/디렉토리를 수정. 저는 교수님의 허락을 받아 여기 사람들로부터 도움을 구합니다. 여기 정확히하고 싶습니다.나는 리눅스 커널에 sysfs를의 메모리 디렉토리를 수정하기위한 내 코스 숙제를하고 있어요 리눅스 커널

배경 : 나는 4 기가 바이트 RAM이있는 경우 내 마더 보드에 4 X 1기가바이트 DIMMS 또는 2X 2기가바이트 DIMM을 가질 수 있습니다. NUMA는이 4GB의 물리적 메모리를 각 청크의 특정 시작 및 종료 물리 주소를 가진 많은 청크로 나누어 Linux에서 지원됩니다. Sysfs의 'devices'디렉토리에는 전역 장치 계층이 들어 있습니다. 여기에는 커널에 등록 된 버스 유형에 의해 발견 된 모든 물리적 장치가 포함됩니다. 따라서 메모리 덩어리에 관한 세부 사항은 Linux 커널의 '/ sys/devices/system/memory /'경로에 저장됩니다. 이 디렉토리에는 'block_size_bytes'라는 파일이 있는데,이 블록은 RAM을 얼마나 많은 부분으로 나눌 수 있는지 결정합니다. 예를 들어 내 시스템에서는 8000000이므로 RAM은 memory0에서 memory43까지 32 개의 메모리 폴더로 분할됩니다. 모든 'memoryX'디렉토리에는 메모리 덩어리의 온라인/오프라인 상태를 나타내는 'state'라는 파일이 있습니다. 메모리에서 특정 덩어리를 '끄기'원한다면 온라인/오프라인으로 토글 할 수 있습니다. 그래서 여기

내가 정확히 수행 할 작업은 다음과 같습니다

내가 4 디렉토리에이 모든 디렉토리 구조를 수정하려는. 왜 4? 왜냐하면 마더 보드에 4 X 1GB DIMM이 있으므로 32 개의 메모리 덩어리를 4 개의 큰 덩어리로 축소하여 온라인/오프라인 상태를 '상태'로 전환하여 원하는 DIMM을 제어 할 수 있습니다. 그래서 기본적으로 DIMM 수준의 메모리 상태를 변경하려고합니다. 거의 내 문제 설명이다

.

내 접근 방식 : 나는 sysfs를 파일 시스템을 통해 읽고 sysfs를의 '메모리'디렉토리를 구성하는 책임이 커널 모듈을 찾기 위해 노력했다. 나는 모듈을 찾고 나의 요구 사항에 따라 편집하고 그 모듈을 컴파일하고 싶다. 이 주제와 관련된 구체적인 문서를 찾기가 점점 어려워 져서이 질문을하게됩니다. 내가 찾을 수있는 것은이 C 프로그래밍 파일 '/lib/modules/3.8.0-19-generic/source/drivers/base/memory.c'에 메모리 덩어리의 '상태'를 설정하는 메소드가 있다는 것입니다. 각 메모리 섹션의 시작 및 종료 물리 주소 및 기타 여러 방법. 그러나 나는이 메소드들이 정확히 어디에 호출되는지 또는 어떤 모듈이이 C 파일을 이용하여 모든 속성을 설정 하는지를 알 수 없다.

당신은 제가 찾을 필요가 정확히 어떤 모듈 알려 주시기 바랍니다 수 있을까요? 내 접근 방식이 잘못되었다고 생각하면 올바른 방향으로 나를 가리 키시겠습니까? 사전 :)에서

감사

+0

시스템이 얼마나 많은 메모리 컨트롤러 (안 채널)이 있습니까? 메모리의 데이터가 인터리브 된 상태로 저장 될 수 있습니다 (즉, 모든 DIMM에 분산되어 있음). –

+0

나는 하드웨어에 익숙하지 않지만 노트북에는 코어 i5가 장착되어 있으므로 설명서에는 하나의 듀얼 채널 DDR3 메모리 컨트롤러가 내장되어 있습니다. 데이터가 인터리브 된 상태로 저장 될 가능성이 있다고 말하면 메모리를 여러 조각으로 나눌 수 없다는 말입니다.기본적으로 RAM을 삽입하면 sysfs 파일 시스템의 8 개 청크로 표시 할 모듈이 무엇인지 알기를 원합니다. 내가 제대로 이해하지 못했다면 의견을 자세히 설명해 주시겠습니까? –

+0

Core i5에는 NUMA가 없습니다. –

답변

0
난 그냥 질문의이 부분에 대한 답변

:

그러나 바로 이러한 메소드가 호출되고 또는이 사용되는 모듈 어디 알아낼 수 아니다 C 파일을 사용하여 모든 속성을 설정하십시오.

lxr을 사용하여 커널 트리를 검색 할 수 있습니다. 예 : show_mem_state의 예입니다.

+0

이봐 요, 해답을 알려 줘서 고맙겠 습니다만 lxr을 커널 트리에서 검색하는 데만 사용했지만 행운은 없습니다. 어떤 모듈이이 파일을 사용하고 있는지를 결정할 수 없습니다. –