Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Isolator Naming 변경 및 Isolator Module화 #5

Open
isac322 opened this issue Aug 22, 2018 · 3 comments
Open

Isolator Naming 변경 및 Isolator Module화 #5

isac322 opened this issue Aug 22, 2018 · 3 comments
Labels
enhancement New feature or request

Comments

@isac322
Copy link
Member

isac322 commented Aug 22, 2018

Isolator Naming : 현재 Isolator들은 CacheIsolator와 같이 Resource에 대해서 Isolator가 구분되어 있다.
하지만, APSys 논문에서는 HW Isolator, SW Isolator로 구분하고 그 장단점을 논하는 것이기에 현재의 Resource 중심의 Isolator를 HW SW로 나누어서 이름을 묶는게 좋지 않을까 함. 가능하면 현재의 구조에서 변경을 최소화하면서 바꿀수 있으면 좋을듯함

생각하는 구조는 다음과 같음

HwIsolator

  • Partitioning
  • CAT
  • Throttling
  • DVFS

SwIsolator

  • Throttling
  • Cycle
  • Scheduling
  • Number of Cores
  • Socket

Isolator Module화 : 현재 Isolator들은 무조건 모두 Enable되서 수행되도록 되어 있음. 하지만, 논문에서 우리가 구현한 알고리즘의 각 Isolator의 효과를 Incremental하게 보여주기 위해서 켜고 꺼야할 수 있음. 이와 관련해서 Configuration-level에서 "ON"시켜서 사용할 Isolator를 지정할 수 있으면 좋지 않을까 생각해봄.

@isac322
Copy link
Member Author

isac322 commented Aug 22, 2018

  1. naming에서 지금 그냥 CacheIsolator, SchedIsolator, MemoryIsolator이라고만 돼있는데, 이건 어차피 isolation들에 각각 CAT, cgroup, DVFS만을 사용할거라고 생각해서 저렇게 지었어요.
    근데 만약 다른 isolation (예를 들어 DVFS말고 Cycle 제한)이 추가될 것 같으면 이슈에서 말한것처럼 이름을 좀 더 자세하게 적는게 맞는것 같아요.

  2. naming에서 HW, SW나누는 문제에 관해서는, 현재 Isolator클래스들의 상속관계를 아래와 같이 바꾸면 금방 할 수 있을 것 같아요.
    근데 이게 코드적으로 HW와 SW isolation을 처리할때 서로 다르게 처리할게 있어서 바꾸시려는거에요?
    의미만을 살리기 위해서라면 상속관계 대신 HWSW폴더를 isolation/isolators폴더에 생성하고 각 isolator들을 속성에 맞게 넣는 식으로 하는건 어떠세요?

상속관계 예시

현재

  • Isolator
    • CacheIsolator
    • SchedIsolator
    • MemoryIsolator

제안

  • Isolator
    • HWIsolator
      • CacheIsolator
      • MemoryIsolator
    • SWIsolator
      • SchedIsolator
  1. module화 관련해서는, 지금 ON/OFF에서 문제되는게 CAT만 있는 것 같아요. 왜냐면 DVFS에서 OFF는 max_frequency를 주는걸 의미하고, cgroup/cpuset에서 OFF는 모든 코어를 다 주는걸 의미하는것 같아서요.
    그래서 제가 이문제에대해서 지금까지 정리해놓은 생각은,
    "DVFS나 cgroup/cpuset같은 1차원적으로 늘리거나 줄이면 ON/OFF까지 커버되는 isolation이 있고, CAT같이 2차원적으로 <아예 끄는것>/<늘리거나 줄이는것>을 모두 탐색해야하는 isolation이 있다."
    에요.

@isac322 isac322 added the enhancement New feature or request label Aug 22, 2018
@YoonsungNam
Copy link
Contributor

YoonsungNam commented Aug 23, 2018

2.에 대해서는, 예를 들면, MemoryIsolator에는 per-core DVFS를 사용해서 Freq.를 조절하는 HW방식과 Cycle을 조절하는 SW방식이 있음. 하지만 현재의 구조는 이 둘을 Resource관점에서만 정의를 하고 있고, 이는 나중에 HW/SW방식을 비교하는 실험을 하는 코드를 작성 시(HW-only iso-sched or SW-only iso-sched), 기능별로 묶여있지 않아 개별로 On/Off하는데 문제가 발생할 여지가 있지 않나 싶음.

3.에 대해서는 OFF라는 것은 결국 No isolation과 같은의미로 해당 Isolation기능을 dynamic하게 임의로 스케줄러가 조절하지 않고 OS에서 하는 Default 스케줄링을 따른다는 의미이므로, 그렇게 default값을 저장해두고 기능Off를선택시 해당 값을 지정하도록 해도 좋지 않을까 싶음.

즉, OFF == default OS behavior (without iso-sched mechanism)

DVFS의 경우를 예로 들면, governor의 policy가 performance일 경우, 가장 높은 freq.로 수행되는게 default임.

@isac322
Copy link
Member Author

isac322 commented Oct 30, 2018

#40 에서 H/W와 S/W를 구분하진 않았지만, 이름은 일부 수정함

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement New feature or request
Projects
None yet
Development

No branches or pull requests

2 participants