HP-UX

HP 의 메모리 paging 알고리즘을 알고 싶습니다.

 
이동훈
비정기 기여자

HP 의 메모리 paging 알고리즘을 알고 싶습니다.

lotsfree, desfree, minfree 라는 파라메타가 있는 것으로 알고 있습니다.



free memory 싸이즈가 각 설정값 이하로 떨어졌을 경우 vhand 혹은 swapper 데몬이 작동을 하여 최소한의 free memory 영역을 확보하는 것으로 알고 있습니다.



이에 대한 정확한 알고리즘을 알고 싶습니다.



추가 질문으로 페이징 시에 메모리상의 어떤 것들을 페이징 하는지도 알았으면 합니다. (stack 영역은 못옮긴다고 하는데 stack 영역만 그런것인지... 그리고 stack 은 무엇인지도..)



한가지더...

free swap 영역이 충분한 상태에서 minfree 이하로 free memory 가 낮아질수 있는지도 궁금합니다. swap 의 free 싸이즈가 충분하다면 minfree 이전에 desfree 혹은 lotsfree 에 따른 알고리즘이 실행되어

minfree 까지 떨어지는 일은 없어야 하는것이 아닌가 생각됩니다.





아래의 질문에서 좀 만족스러운 답을 얻지 못해서 좀더 상세하게 질문을 드리게 되었네요.. 그런데, 어떤분이 이런말씀을 하셨네요..



HP 에 덤프를 의뢰한 것이면 담당 엔지니어에게 문의하는 것이 좀더 정확한 답변을 얻을 수 있는 것이 아니냐는....



그런데 담당 엔지니어께서는 문의를 하기 전에 자신이 보내준 문서를 열심히 공부해보라는 말씀을 하시네요..(보내준 문서는 1997년 제작된 메모리 관련 영문 white paper 였습니다.) 뭐..맞는말인거 같기도 하지만, 제가 궁금한 사항을 알기위해서 그 문서를 자세히 읽어보라는 답변을 한다면 HPRC 의 존재 의미가 무엇인지 의심스럽네요. 솔직히 영문 해석까지 해가면서 볼만큼의 여유가 제게는 없었습니다. (제가 계속 문의하는 것이 굉장히 귀찮았나봅니다. 본인생각으로는 같은답변 계속하기가 짜증났는지도 모르겠고. 굉장히 격앙된 목소리로 전화를 받더군요.)



그래서 이곳에 글을 올립니다.

전 많이 알고 답변 안해주는 분보다, 아는만큼 답변해주시는 고수님들의 답변을 원합니다..



아.. 길어졌네요.. 이상입니다.
1 응답 1
이연주
정기 조언자

HP 의 메모리 paging 알고리즘을 알고 싶습니다.

안녕하십니까...저도 정확한 페이징 알고리즘에 대해서 잘 알지는 못하지만 제가 아는한도 내에서 말씀을 드려보겟습니다.



Page out을 할 page를 선택하는 알고리즘은 two-hand clock algorithm 입니다. clock algorithm의 일반적인 개념은 최근에 참조되지 않았던

메모리 page를 찾기위해 메모리를 scan하고 그 page를 swap space로 move하는 것이죠...이러한 일을 하는 process가 vhand입니다.



vhand의 two-hand clock algorithm이라고 하는것은 두개의 hand가 메모리를 scan하기 때문에 그렇습니다.

먼저 첫번째 hand(age hand)는 그 페이지의 reference bit를 clear시키고 두번째 hand(steal hand)는 refrence bit플 sampling합니다.



즉 age hand가 통과한 시간부터 steal hand가 통과할때까지 reference 되지 않는 페이지들이 memory 밖으로 push되는거죠. 두 hand 사이에는 일정한 간격이 있는데 이를 hand laps라고 합니다.



다시 말씀드리자면 age hand가 최근에 사용되지 않았던 page는 refernce bit를 0으로 set하면서 clear시킵니다. 그다음에 뒤 따라오는 steal hand가 scan할때까지 refrence bit가 0으로 되어있는 page가 page out 되는겁니다.



참고적으로 refrence bit는

1 = Page is being refrenced

0 = Page is NOT being reference

F = Freed Memory Page by vhand process

세가지 상태중 하나입니다.



그리고 말씀하시는 데로 paging과 관련한 threshold는lotsfre,desfree,

minfree가 있고 그 외 lotsfree와 desfree 사이에 gpgslim 이라는 값도 있습니다. free memory가 gpgslim이하로 떨어지면 vhand가 aging과

stealing을 시작합니다. gpgslim값은 lotsfree와 desfree사이의 1/4

의 distance로 설정되고 이 값은 tuning할 수 있는 값은 아닙니다.



lotsfree

| -----> vhand awake(works)

gpgslim

| -----> aging & stealing(Paging begins)

desfree

| -----> selection starts from idle process

(Paging continuees at maximum rate)

minfree

| -----> selection begins from all process

(Process deactivation begins to occur)



이 정도로 허접하지만 제가 알고 있는 HPUX의 paging 알고리즘에 대해서 말씀드렸고요. 그냥 참조만 하십시오. 아마 고수분들이 좀 더

정확한 답변을 올려드릴겁니다. ^^



참고적으로 이 글 전에 올리신 swap space에 대한 글도 읽어보았는데

저도 이해가 안되는 부분이 많이 있는것 같습니다. 이론상이라면swap space가 충분한데도 free memory가 minfree 이하로 떨어지지 않는게

맞습니다만.......^^;;;