AltraMayor / AltraMayor/gatekeeper

Is there a clever way to combine integer divisions?

オープン
#243 コメント 0 件 リアクション 0 件 担当者 0 名 GitHub で見る
enhancement good first issue question
主要言語
C
スター
1.6k
フォーク
252
PR マージ指標
30日以内にマージされた PR はありません

説明

`get_responsible_gk_mailbox()` in file `gk/main.c` takes the reminder `rss_hash_val % gk_conf->rss_conf_front.reta_size` to calculate `rss_hash_val` and `rss_hash_val` is only used on a integer division and reminder on the following lines:
```
idx = rss_hash_val / RTE_RETA_GROUP_SIZE;
shift = rss_hash_val % RTE_RETA_GROUP_SIZE;
```

If `gk_conf->rss_conf_front.reta_size` can only be a power of 2 greater than or equal to `RTE_RETA_GROUP_SIZE`, which is 64, the operation `rss_hash_val % gk_conf->rss_conf_front.reta_size` is not need at all. It suggests that the code of `get_responsible_gk_mailbox()` may be simplifyable. The following questions are key to know how to simplify the code:
1. Can `gk_conf->rss_conf_front.reta_size` take a value that is not a power of 2?
2. Can `gk_conf->rss_conf_front.reta_size` be less than `RTE_RETA_GROUP_SIZE`?

Besides the answers above, the code simplification may require combining properties of integer divisions and reminders and employing new functions (e.g. `div(3)`).

Pull request #242 and its related issue #149 motivated this new issue, so reviewing them might be helpful.

コントリビューションガイド

このリポジトリのコントリビューションガイドは索引されていません

評価

この issue はまだ評価されていません。

新しい issue をメールで受け取る

初心者向けの GitHub issue を短くまとめたダイジェスト。