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

[COST] NetworkIngressCost 需要實作反饋邏輯 #1629

Closed
harryteng9527 opened this issue Mar 31, 2023 · 1 comment · Fixed by #1637
Closed

[COST] NetworkIngressCost 需要實作反饋邏輯 #1629

harryteng9527 opened this issue Mar 31, 2023 · 1 comment · Fixed by #1637
Assignees

Comments

@harryteng9527
Copy link
Collaborator

Related #1578 (comment)

Consumer 在分配 partitions 時,除了得到負載分數外,還需注意 partition 不該與哪些 partitions 放在一起。否則會像 #1475 一樣,即使每個 consumer 分配了相同負載,吞吐量卻沒有得到改善

CostAware assignor 使用 NetworkIngressCost 時需要避免 同一個節點內流量差異過大的 partition 給同一個 consumer,故需要在 NetworkIngressCost 中實作反饋資訊供 assignor 分配時判斷,進而避免分配出負載平衡的 assignment 卻換來不穩定的吞吐量

@harryteng9527
Copy link
Collaborator Author

harryteng9527 commented Apr 10, 2023

@chia7712 學長好,這幾天一直在想下面想討論的問題,不知道有沒有漏想或是怪怪的地方

所以想跟學長討論在 #1637 (comment) 中實作 feedback 時提到的 NetworkIngress cost 估算 upper bound 而非讓使用者介入實作

upper bound 所代表的意義

Upper bound 為一個邊界值,可搭配 traffic interval 來輔助 network ingress cost 產生 incompatibility

  • 當 partition 的流量超出此邊界值,cost function 就會將此 partition 視為不會影響到其他 partition 消費的速度
  • 資料流入速率低於此邊界值的 partitions,就會按照 traffic interval 所設定的流量來分配到各個 intervals 中,供 assignor 分配做參考

想討論的問題

  1. 是否需要估算 upper bound?
    • 不需要
      • 會想討論這點是因為會不會直接拿某個定值當作 upper bound 就很有效果了,不管使用者怎麼調整 consumer 的參數、使用者的使用情境的不同(poll 資料後資料處理的快慢、record size、每次能從 partition 上 fetch 多少資料量 ......)
    • 需要
      • 如 2. 所提到,當區間數 > consumer 數量的話,很有可能發生無解的情況。所以估算 upper bound 或是 traffic interval 時,也要考慮 consumer 的數量
  2. upper bound、traffic interval 與 incompatibility 的使用方式
    • 現在計算 incompatibility 的方式是利用 $$\left\lceil \frac{upper.bound}{traffic.interval} \right\rceil$$來得到總區間數,再利用 partition 的流量 hash 到對應的區間,只要是位於不同區間的 partition 就是不合適的。但這會有一個問題就是當區間數 > consumer 數量時,就會發生無解的情況。
  3. 要用什麼方式估算?
    • 目前是以 partition 會分配到對應流量區間的前提來發想,目前有想到的方式只有
      • cost 在估算時需要搭配 consumer 的數量去估,這樣就不會發生無解的問題。例如:consumer 只有 3 個,traffic interval = 10MB, upper bound 就是 <= 20MB
        • 而計算時可能可以用 partition 的平均流量

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

Successfully merging a pull request may close this issue.

1 participant