-
-
Notifications
You must be signed in to change notification settings - Fork 1.1k
Low memory setup it IT
Questo Γ¨ esattamente l'opposto della configurazione ad alte prestazioni e in genere si desidera seguire questi suggerimenti se si desidera diminuire l'utilizzo di memoria di ASF, per il costo della riduzione delle prestazioni globali.
ASF Γ¨ estremamente leggero sulle risorse per definizione, a seconda del tuo utilizzo anche 128 MB VPS con Linux Γ¨ in grado di eseguirlo, anche se andare che basso non Γ¨ raccomandato e puΓ² portare a vari problemi. Pur essendo leggero, ASF non ha paura di chiedere OS per piΓΉ memoria, se tale memoria Γ¨ necessaria per ASF per funzionare con velocitΓ ottimale.
ASF come un'applicazione cerca di essere ottimizzata ed efficiente il piΓΉ possibile, il che tiene conto anche delle risorse utilizzate durante l'esecuzione. Quando si tratta di memoria, ASF preferisce prestazioni rispetto al consumo di memoria, che puΓ² portare a "punti" di memoria temporanea, che si possono notare, ad es. con account con 3+ pagine distintivo, come ASF recupererΓ e analizzerΓ la prima pagina, leggere da esso il numero totale di pagine, quindi avviare attivitΓ di recupero per ogni pagina extra, che si traduce in recupero simultaneo e l'analisi delle pagine rimanenti. Quel "extra" utilizzo della memoria (rispetto al minimo nudo per il funzionamento) puΓ² velocizzare notevolmente l'esecuzione e le prestazioni complessive, per il costo di un maggiore utilizzo della memoria che Γ¨ necessario per fare tutte queste cose in parallelo. La cosa simile sta accadendo a tutte le altre attivitΓ generali di ASF che possono essere eseguite in parallelo, ad es. con l'analisi delle offerte di trading attive, ASF puΓ² analizzarle tutti contemporaneamente, in quanto sono tutti indipendenti l'uno dall'altro. In cima a quello, ASF (C# runtime) non restituirΓ la memoria inutilizzata al sistema operativo immediatamente dopo, che si puΓ² notare rapidamente in forma di processo di ASF solo prendendo sempre piΓΉ memoria, ma (quasi) non restituire mai quella memoria al sistema operativo. Alcune persone potrebbero giΓ trovare discutibile, forse anche sospettare una perdita di memoria, ma non preoccupatevi, tutto questo Γ¨ da aspettarsi.
ASF Γ¨ estremamente ben ottimizzato e fa uso delle risorse disponibili il piΓΉ possibile. Un elevato utilizzo di memoria di ASF non significa che ASF attivamente utilizzi quella memoria e ne ha bisogno. Molto spesso ASF manterrΓ la memoria assegnata come "stanza" per azioni future, perchΓ© possiamo migliorare drasticamente le prestazioni se non abbiamo bisogno di chiedere il sistema operativo per ogni pezzo di memoria che stiamo per usare. Il runtime dovrebbe rilasciare automaticamente la memoria ASF non utilizzata di nuovo al sistema operativo quando il sistema operativo veramente ne ha bisogno. La memoria inutilizzata Γ¨ sprecata. Si verificano problemi quando la memoria di cui hai bisogno **** Γ¨ superiore alla memoria disponibile per te, non quando ASF mantiene qualche extra assegnato con lo scopo di velocizzare le funzioni che eseguiranno in un momento. Si verificano problemi quando il kernel Linux sta uccidendo il processo di ASF a causa di OOM (memoria esaurita), non quando vedi il processo ASF come consumatore di memoria superiore in htop
.
Il processo Garbage collection utilizzato in ASF è un meccanismo molto complesso, abbastanza intelligente da prendere in considerazione non solo ASF stesso, ma anche il vostro sistema operativo e altri processi. Quando si dispone di un sacco di memoria gratuita, ASF chiederà tutto ciò che è necessario per migliorare le prestazioni. Questo può essere anche fino a 1 GB (con server GC). Quando la memoria del sistema operativo è vicina ad essere piena, ASF rilascerà automaticamente alcuni di essi al sistema operativo per aiutare le cose a stabilizzarsi, che può portare a un utilizzo complessivo di memoria ASF fino a 50 MB. La differenza tra 50 MB e 1 GB è enorme, ma così è la differenza tra il piccolo VPS 512 MB e l'enorme server dedicato con 32 GB. Se ASF è in grado di garantire che questa memoria sarà utile, e allo stesso tempo niente altro richiede in questo momento, preferirà mantenerlo e ottimizzarsi automaticamente in base alle routine che sono state eseguite in passato. Il GC utilizzato in ASF è auto-tuning e otterrà risultati migliori più a lungo il processo è in esecuzione.
Questo Γ¨ anche il motivo per cui la memoria di processo ASF varia da configurazione a configurazione, as ASF will do its best to use available resources in as efficient way as possible, e non in modo fisso come Γ¨ stato fatto durante i tempi di Windows XP. L'utilizzo effettivo (reale) della memoria che ASF sta utilizzando puΓ² essere verificato con il comando statistiche
, e di solito Γ¨ di circa 4 MB per pochi bot, fino a 30 MB se usi cose come IPC e altre funzionalitΓ avanzate. Tieni presente che la memoria restituita dal comando statistiche
include anche la memoria libera che non Γ¨ stata ancora recuperata dal raccoglitore di rifiuti. Tutto il resto Γ¨ condiviso memoria di esecuzione (circa 40-50 MB) e spazio per l'esecuzione (varia). Questo Γ¨ anche il motivo per cui lo stesso ASF puΓ² utilizzare meno di 50 MB in ambiente VPS a bassa memoria, durante l'utilizzo fino a 1 GB sul desktop. ASF si sta attivamente adattando al vostro ambiente e cercherΓ di trovare un equilibrio ottimale per non mettere il vostro sistema operativo sotto pressione, nΓ© limitare le proprie prestazioni quando si dispone di un sacco di memoria inutilizzata che potrebbe essere messo in uso.
Naturalmente, ci sono un sacco di modi come si puΓ² aiutare a puntare ASF nella giusta direzione in termini di memoria che si prevede di utilizzare. In generale, se non avete bisogno di farlo, Γ¨ meglio lasciare che il collezionista rifiuti lavori in pace e fare tutto ciΓ² che ritiene sia meglio. Ma questo non Γ¨ sempre possibile, ad esempio se il tuo server Linux ospita anche diversi siti web, database MySQL e operatori PHP, allora non si puΓ² davvero permettersi ASF restringendosi quando si corre vicino a OOM, come di solito Γ¨ troppo tardi e il degrado delle prestazioni arriva prima. Questo Γ¨ di solito quando si potrebbe essere interessati ad ulteriore sintonizzazione, e quindi leggere questa pagina.
Di seguito i suggerimenti sono suddivisi in poche categorie, con varie difficoltΓ .
I trucchi di seguito non influiscono negativamente sulle prestazioni e possono essere applicati in modo sicuro a tutte le configurazioni.
- Eseguire versione generica di ASF se possibile. La versione generica di ASF utilizza meno memoria poichΓ© non include runtime all'interno, non viene come singolo file, non ha bisogno di scompattarsi in esecuzione, ed Γ¨ quindi piΓΉ piccolo e ha meno impronta di memoria. I pacchetti specifici per il sistema operativo sono pratici e convenienti, ma sono anche in bundle con tutto il necessario per lanciare ASF, che Γ¨ qualcosa che si puΓ² prendere cura di te stesso e utilizzare generico variante ASF invece.
- Non eseguire mai piΓΉ di un'istanza di ASF. ASF Γ¨ destinato a gestire un numero illimitato di bot tutti in una sola volta, e a meno che tu non leghi ogni istanza di ASF a diverse interfacce / indirizzo IP, si dovrebbe avere esattamente un processo di ASF, con piΓΉ bot (se necessario).
- Fai uso di
ShutdownOnFarmingFinished
nel botFarmingPreferences
. Il bot attivo richiede piΓΉ risorse di quelle disattivate. Non Γ¨ un risparmio significativo, poichΓ© lo stato del bot deve ancora essere mantenuto, ma stai risparmiando una certa quantitΓ di risorse, in particolare tutte le risorse relative alla rete, come i socket TCP. Se necessario, puoi sempre allevare altri bot. - Tieni basso il tuo numero di bot. L'istanza del bot
Abilitata da
richiede meno risorse, poichΓ© ASF non disturba l'avvio. Tenete anche a mente che ASF deve creare un bot per ciascuna delle vostre configurazioni, quindi se non hai bisogno diavviare il bot
dato e vuoi salvare qualche memoria extra, puoi rinominare temporaneamente il bot. son
ad esempioBot.json.bak
per evitare di creare lo stato per l'istanza del bot disabilitato in ASF. In questo modo non sarai in grado diavviare
senza rinominarlo indietro, ma anche ASF non si preoccupa di mantenere lo stato di questo bot in memoria, lasciando spazio ad altre cose (risparmio molto piccolo, in 99. % casi che non dovresti preoccuparti con esso, basta tenere i tuoi bot conAbilitato
difalse
). - Ottimizza le tue configurazioni. Soprattutto la configurazione globale di ASF ha molte variabili da regolare, ad esempio aumentando
LoginLimiterDelay
potrai far apparire i tuoi bot piΓΉ lentamente, che permetterΓ all'istanza giΓ avviata di recuperare i badge nel frattempo, al contrario di allevare i tuoi bot piΓΉ velocemente, che prenderanno piΓΉ risorse in quanto piΓΉ bot faranno il lavoro importante (come il badge di analizzazione) allo stesso tempo. Meno lavoro che deve essere fatto allo stesso tempo - meno memoria utilizzata.
Quelle sono alcune cose che si puΓ² tenere a mente quando si tratta di utilizzo della memoria. Tuttavia, quelle cose non hanno alcuna questione "cruciale" sull'uso della memoria, perchΓ© l'utilizzo della memoria proviene principalmente da cose che ASF ha a che fare con e non da strutture interne utilizzate per l'agricoltura di carte.
Le funzioni piΓΉ pesantissime sono le seguenti:
- Analisi della pagina distintivo
- Analisi inventario
Il che significa che la memoria punterΓ di piΓΉ quando ASF si occupa di leggere pagine distintivo, e quando si tratta del suo inventario (e. . invio di commercio o di lavoro con STM). Questo perchΓ© ASF ha a che fare con davvero enorme quantitΓ di dati - l'utilizzo di memoria del browser preferito lanciando queste due pagine non sarΓ inferiore a quello. Siamo spiacenti, questo Γ¨ il modo in cui funziona - diminuisce il numero delle tue pagine distintivo e mantiene basso il numero degli oggetti dell'inventario, che puΓ² essere di sicuro aiuto.
Di seguito i trucchi comportano il degrado delle prestazioni e devono essere utilizzati con cautela.
Il modo raccomandato per applicare queste impostazioni Γ¨ attraverso le proprietΓ ambientali DOTNET_
. Naturalmente, Γ¨ possibile utilizzare anche altri metodi, ad esempio runtimeconfig. son
, ma alcune impostazioni sono impossibili da impostare in questo modo, e in cima a questo ASF sostituirΓ il tuo custom runtimeconfig. son
con la propria sul prossimo aggiornamento, quindi consigliamo le proprietΓ ambientali che puoi impostare facilmente prima di avviare il processo.
.NET runtime consente di tweak spazzbage collector in molti modi, perfezionamento efficace del processo GC in base alle vostre esigenze. Abbiamo documentato sotto proprietΓ che sono particolarmente importanti a nostro parere.
Specifica l'uso consentito di heap GC come percentuale della memoria fisica totale.
Il limite di memoria "duro" per il processo ASF, questa impostazione sintonizza GC per utilizzare solo un sottoinsieme di memoria totale e non tutti. PuΓ² diventare particolarmente utile in varie situazioni simili a server in cui Γ¨ possibile dedicare una percentuale fissa della memoria del server per ASF, ma mai piΓΉ di quello. Essere avvisato che limitare la memoria per ASF da utilizzare non farΓ magicamente tutte quelle allocazioni di memoria necessarie andare via, quindi la fissazione di questo valore troppo basso potrebbe portare a esaurire gli scenari di memoria, in cui il processo di ASF sarΓ costretto a terminare.
D'altra parte, impostare questo valore abbastanza alto Γ¨ un modo perfetto per garantire che ASF non userΓ mai piΓΉ memoria di quanto si possa realisticamente permettere, dando alla vostra macchina un po 'di stanza di respirazione anche sotto carico pesante, pur consentendo al programma di fare il suo lavoro nel modo piΓΉ efficiente possibile.
Configura il collezionista della spazzatura per conservare la memoria a scapito delle collezioni di spazzatura piΓΉ frequenti e possibilmente tempi di pausa piΓΉ lunghi.
Si puΓ² usare un valore compreso tra 0 e 9. PiΓΉ grande Γ¨ il valore, piΓΉ GC ottimizzerΓ la memoria sulle prestazioni.
Specifica la quantitΓ di memoria utilizzata dopo la quale GC diventa piΓΉ aggressivo.
Questa impostazione configura la soglia di memoria di tutto il sistema operativo, che una volta passato, provoca GC a diventare piΓΉ aggressivo e tentare di aiutare il sistema operativo a ridurre il carico di memoria eseguendo un processo GC piΓΉ intensivo e nel risultato rilasciando piΓΉ memoria libera di nuovo al sistema operativo. Γ una buona idea impostare questa proprietΓ alla quantitΓ massima di memoria (come percentuale) che si considera "critico" per le prestazioni di tutto il sistema operativo. Il valore predefinito Γ¨ 90%, e di solito si desidera mantenerlo nell'intervallo 80-97%, poichΓ© un valore troppo basso causerΓ un'aggressione inutile da parte del GC e il degrado delle prestazioni senza alcun motivo, mentre un valore troppo alto metterΓ un carico inutile sul tuo sistema operativo, considerando che ASF potrebbe rilasciare parte della sua memoria per aiutare.
Specifica il livello di latenza GC per cui si desidera ottimizzare.
Questa Γ¨ proprietΓ non documentata che si Γ¨ rivelato funzionare eccezionalmente bene per ASF, limitando le dimensioni delle generazioni di GC e facendo in modo che GC li purifichi piΓΉ frequentemente e piΓΉ aggressivamente. Il livello di latenza predefinito (bilanciato) Γ¨ 1
, ma Γ¨ possibile utilizzare 0
, che si sintonizzerΓ per l'utilizzo della memoria.
Quando impostato, tagliamo lo spazio impegnato in modo piΓΉ aggressivo per il segmento effimero. Questo viene utilizzato per eseguire molte istanze di processi server in cui vogliono mantenere la minima memoria impegnata possibile.
Questo offre pochi miglioramenti, ma puΓ² rendere GC ancora piΓΉ aggressivo quando il sistema sarΓ basso sulla memoria, soprattutto per ASF che fa uso di attivitΓ filettatura pesantemente.
Γ possibile abilitare le proprietΓ selezionate impostando le variabili di ambiente appropriate. Ad esempio, su Linux (shell):
# Non dimenticare di sintonizzare quelli se hai intenzione di utilizzarli
export DOTNET_GCHeapHardLimitPercent=0x4B # 75% as hex
export DOTNET_GCHighMemPercent=0x50 # 80% as hex
export DOTNET_GCConserveMemory=9
export DOTNET_GCLatencyLevel=0
export DOTNET_gcTrimCommitOnLowMemory=1
. ArchiSteamFarm # For OS-specific build
./ArchiSteamFarm.sh # For generic build
O su Windows (powershell):
# Non dimenticate di sintonizzare quelli se avete intenzione di utilizzarli
$Env:DOTNET_GCHeapHardLimitPercent=0x4B # 75% come esadecimale
$Env:DOTNET_GCHighMemPercent=0x50 # 80% come esadecimale
$Env:DOTNET_GCConserveMemory=9
$Env:DOTNET_GCLatencyLevel=0
$Env:DOTNET_gcTrimCommitOnLowMemory=1
. ArchiSteamFarm.exe # For OS-specific build
.\ArchiSteamFarm.cmd # For generic build
Soprattutto GCLatencyLevel
sarΓ molto utile in quanto abbiamo verificato che il runtime effettivamente ottimizza il codice per la memoria e quindi diminuisce in modo significativo l'utilizzo della memoria media, anche con server GC. Γ uno dei migliori trucchi che puoi applicare se vuoi ridurre significativamente l'utilizzo della memoria ASF senza degradare troppo le prestazioni con OptimizationMode
.
Di seguito i trucchi comportano una grave degradazione delle prestazioni e devono essere utilizzati con cautela.
- Come ultima risorsa, Γ¨ possibile sintonizzare ASF per
MinMemoryUsage
tramiteOptimizationMode
global config property. Legga attentamente il suo scopo, in quanto questo Γ¨ un grave degrado delle prestazioni per quasi nessun beneficio di memoria. Questa Γ¨ tipicamente l'ultima cosa che vuoi fare, molto tempo dopo aver attraversato runtime tuning per assicurarsi di essere costretti a farlo. A meno che non sia assolutamente critico per la tua configurazione, scoraggiamo l'utilizzo diMinMemoryUsage
, anche in ambienti con vincoli di memoria.
- Inizia da semplici trucchi di configurazione di ASF, usa la variante generica di ASF e controlla se forse stai solo usando il tuo ASF in modo sbagliato, ad esempio avviando il processo piΓΉ volte per tutti i tuoi bot, o mantenerli tutti attivi se avete bisogno solo di uno o due per autostart.
- Se non Γ¨ ancora sufficiente, abilita tutte le proprietΓ di configurazione elencate sopra impostando le variabili di ambiente appropriate
DOTNET_
. SoprattuttoGCLatencyLevel
offre significativi miglioramenti di runtime per un costo limitato sulle prestazioni. - Se anche questo non ha aiutato, come ultima risorsa abilita
MinMemoryUsage
OptimizationMode
. Questo costringe ASF a eseguire quasi tutto in materia sincrona, farlo funzionare molto piΓΉ lentamente, ma anche non fare affidamento sul pool di thread per bilanciare le cose quando si tratta di esecuzione parallela.
Γ fisicamente impossibile ridurre ulteriormente la memoria, il tuo ASF Γ¨ giΓ fortemente degradato in termini di prestazioni e hai esaurito tutte le tue possibilitΓ , sia in termini di codice che in termini di runtime-wise. Considerare l'aggiunta di qualche memoria in piΓΉ per ASF da usare, anche 128 MB farebbe una grande differenza.
![]() |
![]() |
![]() |
![]() |
---|---|---|---|
![]() |
![]() |
![]() |
![]() |
---|---|---|---|
- π‘ Casa
- π§ Configurazione
- π¬ Domande frequenti
- Installazione (inizia qui)
- π₯ Riscatto giochi in background
- π’ Comandi
- π οΈ CompatibilitΓ
- π§© ItemsMatcherPlugin
- π Gestione
- β±οΈ Prestazioni
- π‘ Comunicazione remota
- πͺ Condivisione familiare di Steam
- π Trading
- β¨οΈ Argomenti da riga di comando
- π§ Deprecation
- π³ Docker
- π€ FAQ Estese
- π Configurazione ad alte prestazioni
- π IPC
- π Localizzazione
- π Registrazione
- πΎ Configurazione bassa memoria
- π΅πΌββοΈ MonitoringPlugin
- π Plugin
- π Sicurezza
- π§© SteamTokenDumperPlugin
- π¦ Terze parti
- π΅ Autenticazione due fattori