-
x chi conosce il CScritto daNon Autenticatoil 2009-01-25 14:38:00.0 alle 2009-01-25 14:38:00.0un applicativo che funziona ininterrottamente da anni su un pentium 233 con windows 2000, questo non fa altro che leggere in continuazione una matrice di 100x100 allocazioni di memoria dove scrive un driver di una scheda di acquisizione dati AD/DA e salva le variazioni su un file di log che ogni tanto ruota.
Adesso ho cambiato HW e deve funzionare su uno Xeon X5470 3.33GHz Windows Server 2008, il problema è questo:
il consumo di CPU sale anche al 30% su quel processo, mentre con il pentium stava a zero, ci sono 100 cicli annidati in cui ci sono altri 100 cicli per leggere la matrice di allocazioni, i cicli è vero sono stretti però con il pentium funzionava tutto, ho provato ad allentarli con qualche micro secondo di sleep, il consumo di CPU va a zero ma perdo decine di eventi.
cosa faccio?
-
Re: x chi conosce il CScritto daNon Autenticatoil 2009-01-25 14:59:00.0 alle 2009-01-25 14:59:00.0Ma perchè hai usato 100 cicli annidati?
Per leggere una matrice bastano due cicli annidati che scorrono rispettivamente le righe e le colonne.
A parte questo, potresti verificare se il driver genera un'interrupt quando scrive qualcosa. In questo modo la tua routine verrebbe attivata solo quando serve.
Infine potresti provare a ricompilare il progamma con maggiori ottimizzazioni nel compilatore.
> sono 100 cicli annidati in cui ci sono altri 100
> cicli per leggere la matrice di allocazioni, i
> cicli è vero sono stretti però con il pentium
> funzionava tutto, ho provato ad allentarli con
> qualche micro secondo di sleep, il consumo di CPU
> va a zero ma perdo decine di
> eventi.
>
> cosa faccio?
-
Re: x chi conosce il CScritto daThe LichÜbermenschil 2009-01-25 15:12:00.0 alle 2009-01-25 15:12:00.0Trollate totali: 21351
- Scritto da:
> Ma perchè hai usato 100 cicli annidati?
>
> Per leggere una matrice bastano due cicli
> annidati che scorrono rispettivamente le righe e
> le
> colonne.
questo deve essere exciabatta
The Lich™
« Non è morto ciò che in eterno può attendere,
e col passare di strani eoni, anche la morte può morire. »

-
Re: x chi conosce il CScritto daNon Autenticatoil 2009-01-25 15:25:00.0 alle 2009-01-25 15:25:00.0no, io e ciabatta abbiamo posizioni inconciliabili.
-
-
Re: x chi conosce il CScritto daNon Autenticatoil 2009-01-25 15:22:00.0 alle 2009-01-25 15:22:00.0> Ma perchè hai usato 100 cicli annidati?
>
> Per leggere una matrice bastano due cicli
> annidati che scorrono rispettivamente le righe e
> le
> colonne.
sarebbe bello, però devo leggere un locazione corrispondente per capire se la lettura e' valida, sbloccarla e passare oltre
> A parte questo, potresti verificare se il driver
> genera un'interrupt quando scrive qualcosa. In
> questo modo la tua routine verrebbe attivata solo
> quando
> serve.
purtroppo no è una free run, costruita appositamente per leggere fino a 10M/s per canale
>
> Infine potresti provare a ricompilare il progamma
> con maggiori ottimizzazioni nel
> compilatore.
già fatto, ma niente, se provo a far eseguire il processo ad una sola CPU il consumo cala drasticamente, idem se lascio linkato il debugger, però con una soluzione più elegante sarebbe meglio.
-
-