Vi ansetter!

Hvorfor er intel_pstate bra for websider


Artikkel av Thomas Audunhus. Published on juli 3, 2017

For å få servere til å levere maksimal ytelse når vi trenger det, valgte vi å basere oss på Intel’s nye Haswell-cpu som grunnkrav i vår nye plattform. En av teknologiene som brukes er intel_pstate, en relativt ny måte å styre hastigheten på cpu’en på. For en prosessor er det å rendre en nettside en kort oppgave, men for at det skal gå raskest mulig bør prosessoren kjøre med full fart når den har behov for det. Dette har tidligere vært vanskelig å kombinere med strømsparing, men intel_pstate har endret mye av dette.

Gamledager

De gode gamle metodene som for eksempel ‘ondemand’ sjekker hvert 10ms om belastningen er gått over 95%. Hvis belastningen er høyere enn 95% så økes cpu-frekvensen med ett eller flere hakk avhengig av noen faktorer. Problemet er at en websiterequest som kjører i feks 5ms ikke vil utløse dette fordi den er over før økningen skjer og load-gjennomstnittet for de 10ms da ville vært rundt 50%. De lengre requestene vil måtte kjøre en stund i sneglefart før de etter 10-20ms endelig kan kjøre i full hastighet det cpu’en klarer. Denne økningen skjer ofte også bare pr core, så når man gjør en SQL-spørring så kjører kanskje databasen fortsatt i sneglefart. I tillegg vil en prosess som venter på I/O kunne kjøre i 100% load og gjøre at en core boostes til turbo-hastighet selv om den egentlig ikke gjør noe i det hele tatt.

intel_pstate

intel_pstate endrer dette helt. OS’et har ikke lenger stort med hastigheten å gjøre annet enn å sette en valgfri øvre begrensning. Med denne så er det CPU’en selv som bestemmer hastigheten og den kan oppjustere hastigheten basert på det den opplever av belastning nå og det som ligger i køen for, samt temperatursensorene sine. Dette gjør at den nesten umiddelbart kan booste rett til turbo hvis den anser det er nok å gjøre og det er lav nok temperatur, og umiddelbart etter køen er tom så kan den senke hastigheten igjen for å få ned temperatur.

En prosess som venter på I/O gir ikke noe CPU-load så i det tilfellet så vil den kjøre helt idle i strømsparing istedetfor turbo som ‘ondemand’ gjerne ville gjort.

Effektene er derfor

  • Vesentlig bedre responstid på CPU når den ikke har konstant load
  • Lavere strømforbruk og temperatur
  • Større mulighet for å bruke Turbo i lengre perioder ved behov på grunn av den ellers lavere temperaturen

For sidene på Raskesider.no betyr det at mer hardt og tungt arbeid kan gjøres mye raskere enn tidligere. Vi har derfor implementert støtte for intel_pstate i Driv OS, som Raskesider.no kjører på.

;

For å få servere til å levere maksimal ytelse når vi trenger det, valgte vi å basere oss på Intel’s nye Haswell-cpu som grunnkrav i vår nye plattform. En av teknologiene som brukes er intel_pstate, en relativt ny måte å styre hastigheten på cpu’en på. For en prosessor er det å rendre en nettside en kort oppgave, men for at det skal gå raskest mulig bør prosessoren kjøre med full fart når den har behov for det. Dette har tidligere vært vanskelig å kombinere med strømsparing, men intel_pstate har endret mye av dette.

Gamledager

De gode gamle metodene som for eksempel ‘ondemand’ sjekker hvert 10ms om belastningen er gått over 95%. Hvis belastningen er høyere enn 95% så økes cpu-frekvensen med ett eller flere hakk avhengig av noen faktorer. Problemet er at en websiterequest som kjører i feks 5ms ikke vil utløse dette fordi den er over før økningen skjer og load-gjennomstnittet for de 10ms da ville vært rundt 50%. De lengre requestene vil måtte kjøre en stund i sneglefart før de etter 10-20ms endelig kan kjøre i full hastighet det cpu’en klarer. Denne økningen skjer ofte også bare pr core, så når man gjør en SQL-spørring så kjører kanskje databasen fortsatt i sneglefart. I tillegg vil en prosess som venter på I/O kunne kjøre i 100% load og gjøre at en core boostes til turbo-hastighet selv om den egentlig ikke gjør noe i det hele tatt.

intel_pstate

intel_pstate endrer dette helt. OS’et har ikke lenger stort med hastigheten å gjøre annet enn å sette en valgfri øvre begrensning. Med denne så er det CPU’en selv som bestemmer hastigheten og den kan oppjustere hastigheten basert på det den opplever av belastning nå og det som ligger i køen for, samt temperatursensorene sine. Dette gjør at den nesten umiddelbart kan booste rett til turbo hvis den anser det er nok å gjøre og det er lav nok temperatur, og umiddelbart etter køen er tom så kan den senke hastigheten igjen for å få ned temperatur.

En prosess som venter på I/O gir ikke noe CPU-load så i det tilfellet så vil den kjøre helt idle i strømsparing istedetfor turbo som ‘ondemand’ gjerne ville gjort.

Effektene er derfor

  • Vesentlig bedre responstid på CPU når den ikke har konstant load
  • Lavere strømforbruk og temperatur
  • Større mulighet for å bruke Turbo i lengre perioder ved behov på grunn av den ellers lavere temperaturen

For sidene på Raskesider.no betyr det at mer hardt og tungt arbeid kan gjøres mye raskere enn tidligere. Vi har derfor implementert støtte for intel_pstate i Driv OS, som Raskesider.no kjører på.

More about Thomas Audunhus

Thomas leder satsningen i vårt hjemland, Norge, og er ekspert på WordPress og WooCommerce. Thomas har bygget noen av de raskeste WordPress og WooCommerce sidene i Norge, og vet derfor nøyaktig hvordan man skal få WordPress og WooCommerce så rask som mulig. I tillegg til å arbeide hos oss er Thomas sentral i det norske WordPress og WooCommerce miljøet. Han er en av organisatorene av Oslo WordPress meetup, og ikke minst lead organizer av WordCamp Oslo 2018.