Ir para conteúdo
  • Cadastre-se

(Resolvido)Linux - Uso alto da CPU [OTX]


Ir para solução Resolvido por WooX,

Posts Recomendados

o otx2 realmente tem um problema com uso de cpu? pois tudo que fiz para otimixar meu pack reduziu a cada player usar cerca de 1% de cpu. como por exemplo , é como se cada player usa-se 1% logo 100 online 100%

porem ainda nao vi de fato se é isso , porque ele roda mais ou menos 10% abaixo da quantia de player, porem antigamente , 1 player usava cerca de 2-3% da cpu!

depois de tudo que alterei! cheguei nesses 1% 

porem apartir dai! depois de rever todos codigos, e diminui-los a ponto deles usarem somente o necessario das linhas uteis!

eu nao sei mais , se é minha source, ou se é o data. pq até datas de ots como Realbaiak feito pelo vitor bertoluccci (ACREDITO SER O MELHOR PACK QUE POSSUO) 

consome o mesmo! 

entt presumo que seja , ou o proprio distro com suas sources! ou libs ou versao de ubuntu !

algo deve estar errado! ou sou um CABAÇO 

me ajudem porfavor! 

 

uso uma maquina VPS da OVH 12GB RAM 50GB SSD intel xeon 4X 2.66 GHZ

@WooX

 

Link para o post
Compartilhar em outros sites

@Wesleyt10 

Aqui estão algumas sugestões (por enquanto):
• Instale uma ferramenta de criação de perfil (preferably perf). Isso ajudará você a analisar o processo OTX e determinar qual função chama de hogs a CPU.
• Use um tipo de compilação diferente, ou seja, RelWithDebInfo em vez de Release.
• Coisas a serem de verificadas: Loops infinitos, uso inadequado de addEvent(s) e Velocidade de Ataque muito rápida.

 

Se puder me enviar a função spell da otx,fica na pasta lib

Tenta remover as  tags de spells xml  e ver se melhora.

Link para o post
Compartilhar em outros sites

sobre mudar o modo de compilaçao , onde eu altero isso? pois minha compilaçao é em linux .

quando utilizei o perf o maior consumo vem das funçoes spectators::map algo assim!

sobre o data , nao há loops registrados, e sobre a funçao de add events . as que possuo no meu data , nao sao solicitadas sempre , sao poucas scripts que solicitam essa funçao. quase nao ocorre , vou verificar melhor.

bom ! olhei novamente as funçoes de addevent

e elas sao muitas . porem sao solicitadas poucas veses , e nao acredito que seja mau uso delas. pois sao scripts confiaveis! e aparentemente estao bem resumidos e bem escritos (OBS meu conhhecimento em lua é bem basico).

 

acredito que seja algo com relaçao a compilaçao , porque possuo varios datapacks, e todos consomem a cpu, e consomem até mais doque esse data que eu fui tentando melhorar!

o arquivo abaixo:

spells.lua

Link para o post
Compartilhar em outros sites

  

@Wesleyt10 

Spoiler
6 minutos atrás, Wesleyt10 disse:

sobre mudar o modo de compilaçao , onde eu altero isso? pois minha compilaçao é em linux .

quando utilizei o perf o maior consumo vem das funçoes spectators::map algo assim!

sobre o data , nao há loops registrados, e sobre a funçao de add events . as que possuo no meu data , nao sao solicitadas sempre , sao poucas scripts que solicitam essa funçao. quase nao ocorre , vou verificar melhor.

bom ! olhei novamente as funçoes de addevent

e elas sao muitas . porem sao solicitadas poucas veses , e nao acredito que seja mau uso delas. pois sao scripts confiaveis! e aparentemente estao bem resumidos e bem escritos (OBS meu conhhecimento em lua é bem basico).

 

acredito que seja algo com relaçao a compilaçao , porque possuo varios datapacks, e todos consomem a cpu, e consomem até mais doque esse data que eu fui tentando melhorar!

o arquivo abaixo:

spells.lua 2 kB · 0 downloads

 

Acredito que não seja este o script, deveria ser o script que aponta para as funções onCastSpell/onCastTimer

 

Tente compilar com este comando no terminal deve funcionar.

Citar

ccmake .. -DCMAKE_BUILD_TYPE=RelWithDebInfo

 

Deve ser parecido com este

Citar

 

Spoiler


local iterations = 10
local exhaustTime = 1.25 * iterations

-- you should edit the return value keeping "i" in formula
function castTimer(i)
    return 1 + ((i-1) * 225)
end

local combat = createCombatObject()
setCombatParam(combat, COMBAT_PARAM_HITCOLOR, COLOR_TEAL)
setCombatParam(combat, COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE)
setCombatParam(combat, COMBAT_PARAM_DISTANCEEFFECT, 156-1)
function onTargetCreature(cid, target)
    if not isPlayer(cid) then
        return true
    end
    min = (getPlayerLevel(cid) * 5 + getPlayerMagLevel(cid) * 50) * 6
    doTargetCombatHealth(cid, target, COMBAT_PHYSICALDAMAGE, -min, -min, CONST_ME_BLOCKHIT)
    return true
end

setCombatCallback(combat, CALLBACK_PARAM_TARGETCREATURE, "onTargetCreature")
local function castSpell(x)
    if isPlayer(x.cid) then
        -- delete the event from the event table
        -- as soon as we execute this section of the script
        x.event[x.counter] = nil
        return doCombat(x.cid, x.combat, x.var)
    end
    -- make an attempt to stop the events if the player is no longer online or dead
    if next(x.event) then
        for n, event in pairs(x.event) do
            if x.event[n] then
                -- stop the event if its stored
                stopEvent(event)
                x.event[n] = nil
            end
        end
    end
    return false
end
function onCastSpell(cid, var)
    if BlockSpellsInArea(cid) then
        doPlayerSendCancel(cid, "Não pode usar Spells neste local..")
        return false
    end
   
    if exhaustion.check(cid, 0010) == TRUE then
        doPlayerSendCancel(cid, "You are exhauted.")
        doSendMagicEffect(getCreaturePosition(cid), 2)
        return false
    end
   
    p = {cid = cid, var = var, combat = combat, event = {}, counter = 0}
    exhaustion.set(cid, 0010, exhaustTime)
    for k = 1, iterations do
        addEvent(function()
            if isCreature(cid) then
                p.counter = k
                p.event[k] = addEvent(castSpell, 1, p)
            end
        end,
        castTimer(k))
    end
    return true
end

 

 

 

 

Link para o post
Compartilhar em outros sites
  • Erimyth mudou o título para Linux - Uso alto da CPU [OTX]

desculpe esse arquivo fica na pasta Spells ou na pasta lib? 

 

sobre o: 

ccmake .. -DCMAKE_BUILD_TYPE=RelWithDebInfo

 

vou começar a compilar com esse comando para ver e lhe informo!

 

Link para o post
Compartilhar em outros sites


 CMake Error: The source directory "/home" does not appear to contain
 CMakeLists.txt.
 Specify --help for usage, or press the help button on the CMake GUI.
 

 

apareceu esse erro na hora de compilar . 

vou te mandar a minha pasta LIB 

lib.rar

bom acredito que meu otx nao seja bem um otx , ele nao é o mesmo liberado pelo woox aki no forum , mas se assemelha muito! é um mix de tfs sla. vou mandar o arquivo MAKEFILE Makefile

Link para o post
Compartilhar em outros sites
5 horas atrás, Wesleyt10 disse:

uso uma maquina VPS da OVH 12GB RAM 50GB SSD intel xeon 4X 2.66 GHZ

@WooX

 

O problema está aqui. Se com diferentes datapacks o consumo é praticamente o mesmo, o problema está no host, a quantidade de núcleos pouco importa quando você for rodar uma engine de OpenTibia, o que conta nessa hora é clock do processador que no seu caso é de 2.66 GHz, e ainda é uma VPS, o que significa que recursos da maquina são compartilhados. Neste caso o recomendável é você utilizar um servidor dedicado com um processador de 3.8 GHz ou mais.

 

 

 

Nós somos aquilo que fazemos repetidamente. Excelência, não é um modo de agir, mas um hábito.

                                                                                                                                                                                                                                        Aristóteles 

Link para o post
Compartilhar em outros sites

poxa , vejo alguns player flando que usam vps e nao tem esse gasto. meu data HOJE gasta muito menos que os demais, os outros geralmente gastam 3% por player , é absurdo! ja o meu gasta 1%- . porem ralei mto pra arrumar oque eu conseguia! 

entt a minha soluçao é somente pelo host mesmo?

Link para o post
Compartilhar em outros sites
  • Solução
4 horas atrás, Wesleyt10 disse:

poxa , vejo alguns player flando que usam vps e nao tem esse gasto. meu data HOJE gasta muito menos que os demais, os outros geralmente gastam 3% por player , é absurdo! ja o meu gasta 1%- . porem ralei mto pra arrumar oque eu conseguia! 

entt a minha soluçao é somente pelo host mesmo?

Sim, há diferença entre uma VPS virtualizada com CPU de 2.6GHz e outra com um i7 ou Ryzen da vida que alcança seus 5.0GHz, você não precisa de fato migrar para um dedicado se não tem condição, mas busque ao menos uma VPS que te ofereça melhor performance no quesito processamento, dê prioridade ao clock do cpu no lugar da quantidade de núcleos.

Editado por WooX (veja o histórico de edições)

 

 

 

Nós somos aquilo que fazemos repetidamente. Excelência, não é um modo de agir, mas um hábito.

                                                                                                                                                                                                                                        Aristóteles 

Link para o post
Compartilhar em outros sites

fiz oque voce disse ! fui para uma vps de 3.5 GHZ com 10Gb de Ram

e "por magica"  cada player esta gastando em torno de 0.2 a 0.25 (pico) 

coloquei o bot pra sugar todos os processos do personagem, (Potion , Spell ,FAST ataque , efeitos de aura, utana vid, cortar , subir e descer escada) coloquei tudo sem exhausted e o pico foi 0.25 - com os exhausted 0.2 , coloquei 10 personagens e gastaram 2.5% da cpu

- oscilou entre 1.7 - 2.5 = 10 players online

calculo basico 100 players online - 25% * 4 = 100% = 400 online

a vps de 10Gb aguenta entre 350 a 400 players online !

correto? vou colocar como topico resolvido!

obrigado @WooX

 

Editado por Wesleyt10 (veja o histórico de edições)
Link para o post
Compartilhar em outros sites
  • Erimyth locked this tópico
Visitante
Este tópico está impedido de receber novos posts.
×
×
  • Criar Novo...

Informação Importante

Confirmação de Termo