PDA

View Full Version : SuperFetch: bug o comportamento normale?


Blue_screen_of_death
28-02-2015, 11:30
Ragazzi, ho notato un comportamento forse anomalo del servizio ottimizzazione avvio (SuperFetch).

In pratica ad ogni avvio, risveglio da sospensione o da ibernazione tale servizio richiede dal 50% all'80% di CPU per ben 10-15 minuti.

Poi si stabilizza tra 0% e 10%.

Ora chiaramente in macchine che montano CPU non particolarmente veloci, questo ha impatto sulle prestazioni, rendendo il PC inutilizzabile per una ventina di minuti dall'accensione\risveglio.

Anche voi avete un comportamento simile?

P.S. Il sistema operativo è W8.1, aggiornato, con avvio pulito, scansionato, esente da malware o altro tipo di infezione.

x_Master_x
28-02-2015, 12:18
Potrebbe essere normale, controlla il comportamento ad ibernazione/sospensione senza programmi aperti.

Blue_screen_of_death
28-02-2015, 13:16
Ho fatto qualche prova. In effetti dipende dal numero di programmi aperti. Chiudendo tutto, al riavvio il servizio non scassa quasi per niente.

Non ci avevo fatto caso perché per l'uso che ne faccio io, saturo tutta la RAM, e iberno senza preoccuparmi di chiudere nulla. Al riavvio è un macello. ^^

Altri servizi che rompono al risveglio sono:

- Communications Service, che dovrebbe essere il servizio che aggiorna le App Immersive (tipo l'app Mail). Crea un picco di 1-2 minuti, poi si mette a posto. Non è così problematico alla fine.

- Windows Update. E questo invece non lo capisco proprio. Ha fatto la ricerca e download degli aggiornamenti ieri alle 17.00. Li ha installati oggi alle 10.00. Adesso tiene impegnata la CPU per il 30%-50%. Non credo cerchi altri aggiornamenti, dato che non sono passate neanche 24h, non sta installando nulla. Ma allora che sta a fa?

Quindi in definitiva, vorrei cercare di capire se questi servizi eseguono operazioni inutili\ridondanti. E in tal caso, trovare una soluzione per limitare lo "spreco di risorse".

La CPU è un AMD 1.00 GHz (è un notebook). So che è pochino per W8, però garantisco che il sistema non gira affatto male. Se riuscissi ad eliminare questi "sprechi di risorse" la macchina sarebbe perfetta.

x_Master_x
28-02-2015, 14:02
Per quanto riguarda il Superfetch, nel registro alla chiave:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Memory Management\PrefetchParameters

Per la DWORD EnableSuperfetch cambia il valore 3 di default al valore 1 o al limite a 0, fai delle prove in tal senso.

0 Disables SuperFetch.
1 Enables SuperFetch when the application starts up.
2 Enables SuperFetch when the device starts up.
3 Enables SuperFetch when the application or device starts up.


Dovrebbe migliorare la situazione anche con RAM satura. Invece per quanto riguarda Windows Update dovrebbe cercare gli aggiornamenti tutti i giorni alle 3 di notte ( quindi se il PC è spento rimanda alla prima sessione disponibile ) a meno che non sia tu a cambiare nelle impostazioni ogni quanto frequentemente effettuare la suddetta ricerca, esempio ogni lunedì, ogni martedì etc. oppure puoi disabilitare del tutto la ricerca ed effettuare l'operazione manualmente ogni tot.

Blue_screen_of_death
28-02-2015, 14:11
Thanks! Sperimenterò per il SuperFetch ;)

Per Windows Update vorrei provare a fare gli aggiornamenti manualmente, ma lanciandoli tramite Operazioni Pianificate. Così scelgo io quando farli partire, e ne ho pieno controllo.
Qualche idea su come lanciare gli aggiornamenti tramite Tasks?

x_Master_x
28-02-2015, 14:29
Searching, Downloading, and Installing Updates

The scripting sample in this topic shows you how to use Windows Update Agent (WUA) to scan, download, and install updates.

The sample searches for all the applicable software updates and then lists those updates. Next, it creates a collection of updates to download and then downloads them. Finally, it creates a collection of updates to install and then installs them.

If you want to search, download, and install a specific update that you identify by using the update title, see Searching, Downloading, and Installing Specific Updates.

Before you attempt to run this sample, note the following:

WUA must be installed on the computer. For more information about how to determine the version of WUA that is installed, see Determining the Current Version of WUA.
The sample can download updates only by using WUA. It cannot download updates from a Software Update Services (SUS) 1.0 server.
Running this sample requires Windows Script Host (WSH). For more information about WSH, see the WSH section of the Platform Software Development Kit (SDK). If the sample is copied to a file named WUA_SearchDownloadInstall.vbs, you can run the sample by opening a Command Prompt window and typing the following command at the command prompt.


cscript WUA_SearchDownloadInstall.vbs



Set updateSession = CreateObject("Microsoft.Update.Session")
updateSession.ClientApplicationID = "MSDN Sample Script"

Set updateSearcher = updateSession.CreateUpdateSearcher()

WScript.Echo "Searching for updates..." & vbCRLF

Set searchResult = _
updateSearcher.Search("IsInstalled=0 and Type='Software' and IsHidden=0")

WScript.Echo "List of applicable items on the machine:"

For I = 0 To searchResult.Updates.Count-1
Set update = searchResult.Updates.Item(I)
WScript.Echo I + 1 & "> " & update.Title
Next

If searchResult.Updates.Count = 0 Then
WScript.Echo "There are no applicable updates."
WScript.Quit
End If

WScript.Echo vbCRLF & "Creating collection of updates to download:"

Set updatesToDownload = CreateObject("Microsoft.Update.UpdateColl")

For I = 0 to searchResult.Updates.Count-1
Set update = searchResult.Updates.Item(I)
addThisUpdate = false
If update.InstallationBehavior.CanRequestUserInput = true Then
WScript.Echo I + 1 & "> skipping: " & update.Title & _
" because it requires user input"
Else
If update.EulaAccepted = false Then
WScript.Echo I + 1 & "> note: " & update.Title & _
" has a license agreement that must be accepted:"
WScript.Echo update.EulaText
WScript.Echo "Do you accept this license agreement? (Y/N)"
strInput = WScript.StdIn.Readline
WScript.Echo
If (strInput = "Y" or strInput = "y") Then
update.AcceptEula()
addThisUpdate = true
Else
WScript.Echo I + 1 & "> skipping: " & update.Title & _
" because the license agreement was declined"
End If
Else
addThisUpdate = true
End If
End If
If addThisUpdate = true Then
WScript.Echo I + 1 & "> adding: " & update.Title
updatesToDownload.Add(update)
End If
Next

If updatesToDownload.Count = 0 Then
WScript.Echo "All applicable updates were skipped."
WScript.Quit
End If

WScript.Echo vbCRLF & "Downloading updates..."

Set downloader = updateSession.CreateUpdateDownloader()
downloader.Updates = updatesToDownload
downloader.Download()

Set updatesToInstall = CreateObject("Microsoft.Update.UpdateColl")

rebootMayBeRequired = false

WScript.Echo vbCRLF & "Successfully downloaded updates:"

For I = 0 To searchResult.Updates.Count-1
set update = searchResult.Updates.Item(I)
If update.IsDownloaded = true Then
WScript.Echo I + 1 & "> " & update.Title
updatesToInstall.Add(update)
If update.InstallationBehavior.RebootBehavior > 0 Then
rebootMayBeRequired = true
End If
End If
Next

If updatesToInstall.Count = 0 Then
WScript.Echo "No updates were successfully downloaded."
WScript.Quit
End If

If rebootMayBeRequired = true Then
WScript.Echo vbCRLF & "These updates may require a reboot."
End If

WScript.Echo vbCRLF & "Would you like to install updates now? (Y/N)"
strInput = WScript.StdIn.Readline
WScript.Echo

If (strInput = "Y" or strInput = "y") Then
WScript.Echo "Installing updates..."
Set installer = updateSession.CreateUpdateInstaller()
installer.Updates = updatesToInstall
Set installationResult = installer.Install()

'Output results of install
WScript.Echo "Installation Result: " & _
installationResult.ResultCode
WScript.Echo "Reboot Required: " & _
installationResult.RebootRequired & vbCRLF
WScript.Echo "Listing of updates installed " & _
"and individual installation results:"

For I = 0 to updatesToInstall.Count - 1
WScript.Echo I + 1 & "> " & _
updatesToInstall.Item(i).Title & _
": " & installationResult.GetUpdateResult(i).ResultCode
Next
End If


Ricordati che la Task deve essere elevata come amministratore, lo puoi modificare a piacere una volta accertato che funzioni correttamente.