Hacktoberfest 2026: le issue che i maintainer hanno segnato per ottobre, aperte e adatte ai principianti. Sfoglia le issue Hacktoberfest

Problem with uniformity of DB12 results

Aperta
#15 6 commenti 0 reazioni 0 assegnatari Vedi su GitHub

@IgorPelevanyuk ci sta già lavorando.

Dal 8/10/2025.

  • #16 di @IgorPelevanyuk — aperta

Valutazione

Difficoltà
4/5
Tempo stimato
3-5 giorni
Idoneità per principianti
38/100
Tipo di issue
Bug
Chiarezza
Abbastanza chiara
Stato di attività
Ferma
Stack tecnologico
python
Ambito
performance

Direzione di ricerca

Iniziare esaminando il calcolo referenziato nella descrizione dell’issue alla riga 66 di dirac_wms_cpu_normalization.py e l’uso di os.times() descritto nell’issue. Riprodurre l’istogramma dei valori DB12 con la simulazione Python fornita, quindi verificare che i valori di normalizzazione risultanti non presentino più lacune o concentrazioni dovute agli arrotondamenti.

Scritto dal modello di indicizzazione a partire dal testo della issue.

Descrizione

Recently I was analyzing the job execuiton and noticed quite a strange situation.

Image

There are two problems with uniformity:

  1. In the area around 54 DB12. It looks like some DB12 results are impossible to get. Like 52.8, 53.7, 54.4, 55.0 and so on.
  2. In the area around 38 DB12. On the other hand, it looks like some values have considerably higher probability to appear.

So, I decided that the problem is with rounding and here what I got.

  1. When we calculate DB12, we are using os.times() , but this function gives values rounded by 2 numbers after comma. Example: 4.58, 4.59, 4.6 and so on.
  2. When DB12 benchmarks results are saved by dirac, they are also rounded by 1 number after comma (https://github.com/DIRACGrid/DIRAC/blob/c0afdba5ded29e72f1db144d71df3918313a28cb/src/DIRAC/WorkloadManagementSystem/scripts/dirac_wms_cpu_normalization.py#L66).

To simulate that I generated DB12 results which could be received from 50000 tests with test duration distributed uniformly:

df = pd.DataFrame({
    'duration': [3.00 + x * 0.0001 for x in range(50000)],
    'result': [round((250.0 / round(3.00 + x * 0.0001, 2)) / 1.0, 1) for x in range(50000)],
})

And draw a histogram counting different values of results (that is how CPUNormalizationFactor ius calculated for every job).

Image

(Interactive plot with results: DB12_freq.html)
Obviously there is a problem with uniformity of the results. It is not only for high DB12 values, but also for lower one. It is just not so visible for low values of DB12.

Lingua principale
Python
Stelle
5
Fork
8
Metriche di merge delle PR
Nessuna PR unita negli ultimi 30g

Preparare l'ambiente

Come iniziare

  1. Leggi tutta la issue e poi la guida ai contributi del progetto.
  2. Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
  3. Fai un fork del repository e lavora su un branch.
  4. Apri una pull request che faccia riferimento al numero della issue.

Altre issue di DIRACGrid/DB12

Tutte le issue di DIRACGrid/DB12

Issue simili

Altre issue su Python

Ricevi le nuove issue nella tua casella

Un breve riepilogo di issue GitHub adatte ai principianti.