Ajustes de Desempenho

Aviso

These docs were written for SpongeAPI 7 and are likely out of date. If you feel like you can help update them, please submit a PR!

O Sponge fornece várias opções de melhoria e ajuste do desempenho para ajudar-te a executar um servidor sem lag, mesmo sob carga pesada.

Nota

Apesar de tentarmos melhorar o desempenho de todos os servidores, os ganhos de desempenho dependem da tua máquina. Corre alguns testes para garantir configuraste o servidor Sponge de modo a tirares o proveito máximo!

Raio de Ativação de Entidades

Esta definição altera o comportamento de carregamento de entidades à beira de jogadores. Baixar este valor resultará em que só serão carregadas as entidades mais próximas, ao passo que aumentá-lo fará com que as entidades mais distantes do jogador também sejam carregadas. Baixa esta valor para melhorares o desempenho do teu servidor, especialmente se tiveres muitas entidades e muitos jogadores. Para desativares o raio de ativação para uma entidade em específico, define o seu valor para 0.

Dica

É possível discriminar o raio de ativação por tipo de mob. Podes definir auto-populate para true e o Sponge adicionará todos os mobs disponíveis à lista do raio de ativação. Recomenda-se que desatives isto assim que a lista estiver cheia. Se adicionares novos mobs ao jogo, repete simplesmente este procedimento, e os novos mobs serão adicionados à lista abaixo.

entity-activation-range {
    # If enabled, newly discovered entities will be added to this config with a default value.
    auto-populate=false
    # Default activation ranges used for all entities unless overridden.
    defaults {
        ambient=32
        aquatic=32
        creature=32
        misc=16
        monster=32
    }
}

Iluminação Assíncrona

Esta configuração irá executar verificações de iluminação num thread à parte, para melhorar o desempenho.

optimizations {
    # Runs lighting updates async.
    async-lighting {
        # If enabled, runs lighting updates async.
        enabled=true
        # The amount of threads to dedicate for async lighting updates. (Default: 2)
        num-threads=2
    }
}

Cache dos Donos de Entidades Domesticáveis

Esta configuração irá armazenar em cache os UUIDs dos proprietários de entidades domesticáveis para evitar pedidos constantes ao data watcher.

optimizations {
    # Caches tameable entities owners to avoid constant lookups against data watchers. If mods cause issue, disable.
    cache-tameable-owners=true
}

Drops Pre Merge

Esta configuração vai pré-processar e potencialmente fundir itens dropados para evitar o spawn de entidades adicionais, só para serem imediatamente fundidas.

optimizations {
    # If enabled, block item drops are pre-processed to avoid
    # having to spawn extra entities that will be merged post spawning.
    # Usually, Sponge is smart enough to determine when to attempt an item pre-merge
    # and when not to, however, in certain cases, some mods rely on items not being
    # pre-merged and actually spawned, in which case, the items will flow right through
    # without being merged.
    drops-pre-merge=true
}

Panda Redstone

Um algoritmo alternativo de atualização Redstone, leva a menos atualizações de bloco quando algum Redstone muda.

optimizations {
    # If enabled, uses Panda4494's Redstone implementation which improves performance.
    # See https://bugs.mojang.com/browse/MC-11193 for more information.
    # Note: This optimization has a few issues which is explained in the bug report. We are not responsible for any issues this may cause.
    panda-redstone=false
}

Ajuste da Frequência de Auto-Save

O Minecraft Vanilla escreve em disco todas as chunks a cada 900 ticks (45 segundos). Se desejas aumentar ou diminuir este intervalo, podes mudá-lo no ficheiro global.conf do servidor:

world {
    # The auto-save tick interval used when saving global player data.
    # Set to 0 to disable. (Default: 900) Note: 20 ticks is equivalent to 1 second.
    auto-player-save-interval=900

    # The auto-save tick interval used to save all loaded chunks in a world.
    # Set to 0 to disable. (Default: 900) Note: 20 ticks is equivalent to 1 second.
    auto-save-interval=900
}

Reduzir este intervalo (aumentar a frequência) aumenta a carga para a CPU e para o disco do servidor, mas minimiza a perda de dados que pode ocorrer se o servidor encravar, ou a luz for abaixo. Por outro lado, aumentar este intervalo reduz a carga no hardware, mas à custa do aumento da quantidade de dados do servidor que podem ser perdidos caso este falhe.

Tempo Real

Ativar isto melhorará simplesmente a experiência dos teus jogadores quando a taxa de ticks estiver baixa. Isto não vai melhorar o desempenho do servidor! Algumas entidades, entidades planas e objetos horários vão usar o tempo real em vez das ticks, para se atualizarem.

modules {
    # Use real (wall) time instead of ticks as much as possible
    realtime=false
}

Um exemplo disto são os animais bebés. Normalmente, demoram 20 minutos a crescer, até serem adultos. No entanto, se o servidor estiver lento, cada animal receberá menos ticks, aumentando assim o tempo que eles demoram a crescer. Esta configuração muda alguma da lógica interna dos animais para usarem o tempo real que passou, e não o número de ticks. Isto também se aplica a partir blocos, de modo que acaba com aquela cena de “partir o mesmo bloco várias vezes”.

Negar pedidos de chunks

Aviso

Esta é uma definição experimental para ganho de desempenho. Recomendamos que não a atives se tiveres mods no teu servidor, ou se tiveres problemas relativos ao carregamento de TileEntities.

world {
    # If enabled, any request for a chunk not currently loaded will be denied (exceptions apply for things like world gen and player movement).
    # Note: As this is an experimental setting for performance gain, if you encounter any issues then we recommend disabling it.
    deny-chunk-requests=false
}

Quando esta opção está ativada, os mods que pedirem que áreas sejam carregadas, para desempenharem alguma função, verão esses pedidos recusados. Somente jogadores e chamadas de carregamento do mundo específicas terão o poder para carregar novas chunks.