시스템의 이전 동작을 기반으로 향후 동작을 예측하는 알고리즘을 찾고 있습니다.이전 동작을 기반으로 시스템의 동작을 예측하는 방법
빈 블록의 공개 목록이있는 병렬 메모리 할당자를 만들고 있습니다. 필요한 경우 각 스레드는이 목록에서 블록을 가져 와서 할당 할 수 있습니다. 블록은 할당 크기 (8, 12, 16 바이트 ~ 약 4KB)에 따라 저장소에 그룹화됩니다. 블럭이 비게되면 (물론 동기화 오버 헤드와 함께) 전역 목록으로 돌아 간다. 빈에서 어떤 블럭도 비어 있지 않으면, 새로운 빈을 얻기 전에 다른 빈의 블럭에서 위치를 "훔치려"시도합니다. , 5 개 블록 소요 메모리, 말할 수
- 스레드가 할당 가능성이있을 수 있습니다 :
지금 저를 염려 두 가지 상황이 있습니다. 잠시 후,이 메모리를 모두 할당 해제합니다 (블록은 전역 목록으로 이동합니다). 그 직후, 5 블록을 다시 할당하고 할당을 해제합니다. 이 경우 동기화 오버 헤드를 피하기 때문에 항상 5 개의 블록을 유지하고 전체 목록으로 반환하지 않는 것이 좋습니다.
- 할당자가 위치를 "도용"하는 경우, 낭비되는 메모리를 사용합니다. 그러나 이것이 메모리 사용을 증가시키는 경우가 있습니다.
나는 패턴의이 종류를 관찰 할 수있는 시스템을 확인하고 다음 번 것을의 할당 자 할 것이 현명하다 무엇을 알고 무엇을하지 않도록 어딘가에 결과를 저장할 (빈 적어도 N 블록을 유지 X, bin Y에서 "도용"하지 마십시오).
유전 알고리즘은 어떤 용도로 사용됩니까? 나는 그들에 관해 아무 것도 모른다. 그러나 나는 그들이 기계 학습에 능숙하다고 들었다. 사전에
감사합니다!
잠재적 이득이 알고리즘의 원인이되는 여분의 오버 헤드로 인해 왜소하게 될지 모르는 큰 위험이 있다고 생각합니다. 또 다른 한가지는 상당한 양의 역사적인 데이터가 없다면 역사에 기반한 미래의 할당을 예측하는 것이 거의 불가능하다는 것입니다. 그러한 데이터를 수집하면 할당에 오버 헤드가 추가됩니다. IMHO 당신은 OS/런타임이 이것을 처리하게하는 것이 좋습니다. –
가비지 수집기 또는 할당 자에서만 작업하고 있습니까? 즉 빈 블록을 찾아야합니까, 아니면 '무료'방법으로 자신이 누구인지 알고 계십니까? – Anna
사실, 분석 알고리즘의 추가 오버 헤드는 별도의 스레드에서 가져올 수 있습니다. 실제 할당에 영향을 줄 필요는 없습니다. 그들은 단지 요청 된 것을 기록하고 현재 전략을 사용해야합니다. – MSalters