Categorie
Informatica Linux

CPU Troppo Calda Durante Il Rendering Con Blender ? Ecco Una Soluzione

Durante il rendering del video che vedete in cima a questo post (che è un po’ un epic fail), la temperatura della mia CPU, un AMD FX 8350, è andata over 9000 (82 °C).

Il Problema

Ovviamente tenere la CPU costantemente a quella temperatura non è assolutamente un bene, anzi rischia di accorciare sensibilmente la vita del processore. Personalmente non ho mai avuto problemi di surriscaldamento con il nuovo pc e anche con render complessi che duravano giorni non ho mai superato i 62°C ma a causa le dimensioni da ripostiglio di camera mia, l’assenza di un condizionatore e la temperature simile a quella del centro del sole, durante questo ultimo rendering ho raggiunto gli 82°C, temperatura che mi ha lasciato abbastanza perplesso sopratutto perchè il PC continuava senza problemi a lavorare come un mulo senza nemmeno un segno di cedimento 😀 . Al momento il mio dissipatore è Cooler Master Hyper 103 ma a quanto pare questo dissipatore non è abbastanza per dissipare il calore del mio infuocato AMD FX 8350. L’unica soluzione seria a questo problema,  sarebbe quella di passare a un dissipatore superiore come il Cooler Master NEPTON 280L (che mi permetterebbe anche di fare un po’ di overclock) ma non me lo posso permettere la momento quindi ho dovuto trovare una soluzione alternativa provvisoria al problema a costo 0 😀 .

Il Test

Quando creo animazioni con Blender, non creo mai un video direttamente con questo software ma “renderizzo” ogni singolo frame e poi “incollo” tutti i frame assieme con Kdenlive. Questo per 2 motivi: prima di tutto in caso di crash non dovrei ricominciare da capo a renderizzare il video ma solo dall’ultimo frame e numero 2 questo mi da la possibilità di “spalmare” il rendering in più giorni potendolo fermare quando voglio. Dopo essermi accorto delle temperature da vulcano in eruzione, ho fermato tutto e ho aspettato che il PC si raffreddasse, dopodiché ho provato a renderizzare 6 frame di fila abbastanza complessi e vedere le temperature massime e quanto tempo ci volesse a raggiungere la temperatura di non ritorno. Il risultato è stato abbastanza sconcertante.

CPU Caliente
CPU Caliente

In pochi minuti la CPU ha raggiunto la temperatura massima e l’ha mantenuta per tutto il tempo del rendering dei 6 frame non scendendo mai sotto i 78 gradi e questo è male!. Dal momento che non volevo distruggere il PC, l’unica cosa che mi è venuta in mente è stata quella di mettere in pausa il rendering tra un frame e l’altro per permettere alla CPU di raffreddarsi e poi ricominciare, ovviamente non potevo stare al PC per ore a pausare manualmente il rendering un frame alla volta. Dal momento che ero sicuro che non ero l’unico ad avere questo problema e che io sappia questa funzione non esiste su Blender (se sbaglio commentate pure e spiegatemi come si fa lol) , ho deciso di cercare la soluzione onlie e BINGO!

La Soluzione

Dopo un po’ di ricerche ho trovato quello che cercavo.Un utente di Stackexchange ha condiviso un suo script in python che permette di fermare per un determinato periodo di tempo deciso dall’utente il rendering tra un frame e l’altro.Lo script è il seguente:

import time
def sleep(scene, seconds=2.0):
    print("Sleep start")
    time.sleep(seconds)
    print("Sleep stop")

import bpy
bpy.app.handlers.render_post.append(sleep)

Prima di utilizzarlo dovete decidere quanti secondi fermarvi tra un frame e l’altro. Per avere un’ idea vi consiglio di fare come ho fatto io. Fate raffreddare il PC, dopodiché renderizzate un solo frame e una volta terminato vedete quanto tempo impiega la CPU a tornare alla temperatura minima.Una volta deciso il tempo di “cooldown” della CPU nel menu di Blender, selezionate come Screen Layout Script poi cliccate su new.

Blender Script
Blender Script

Dopodiche copiate e incollate lo script e modificate i secondi di pausa tra un frame e l’altro in questo modo:

Blender Script
Blender Script

Ad esempio, dopo alcune prove ho trovato che la pausa ideale tra un frame e l’altro è 170 secondi. Una volata inseriti i parametri cliccate Run Script. Renderizzando gli stessi frame elaborati in precedenza il risultato è stato soddisfacente:

Blender Render
Blender Render

Come potete vedere dallo screen, la CPU ha si raggiunto una temperatura molto alta, ma è stato solo un  livello di picco di pochi secondi a differenza della prima prova, dove l’altissima temperatura veniva mantenuta per tutta l’elaborazione dei frame.

Conclusioni

Per concludere, mi pare ovvio dire che questa non è una soluzione permanente ma è un ottimo compromesso in caso di emergenza e sopratutto se dovete renderizzare pochi frame complessi, perchè,come potete immaginare, l’utilizzo di questo script comporta un aumento considerevole del tempo di elaborazione che se per alcuni non è un problema per altri potrebbe esserlo. Quindi se anche voi avete costantemente il problema della CPU barbecue durante il rendering e non volete utilizzarla per cuocerci le salamelle, l’unica soluzione permanente valida è cambiare il vostro dissipatore con qualcosa di più potente (e fare rendering di notte quando le temperature sono più basse). Se avete dei consigli, i commenti sono aperti a tutti e sono ben accetti . Se questo post vi è piaciuto o vi è stato utile condividetelo sui social e iscrivetevi al canale Youtube :p .

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *