AltraMayor / AltraMayor/gatekeeper

Is there a clever way to combine integer divisions?

Abierto
#243 0 comentarios 0 reacciones 0 asignados Ver en GitHub
enhancement good first issue question
Lenguaje dominante
C
Estrellas
1.6k
Forks
252
Métricas de merge de PR
Sin PR fusionados en 30 d

Descripción

`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.

Guía de contribución

No hay ninguna guía de contribución indexada para este repositorio

Evaluación

Este issue todavía no se ha evaluado.

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.