Check alle échte Black Friday-deals Ook zo moe van nepaanbiedingen? Wij laten alleen échte deals zien

[Info] Server performance & bottlenecks

Pagina: 1
Acties:

  • Sir_Hendro
  • Registratie: Augustus 2006
  • Laatst online: 22:33
Hallo lezers,

Momenteel ben ik bezig met het kijken naar de hardware voor mijn kleine zakelijke netwerk met de bijbehorende servers. Ik ontwikkel applicaties en wil graag de server software voor wat simpele programma's evenals proef server software draaien over mijn zakelijke lijn.

Ik weet wat voor effecten mijn code heeft op de hardware maar ken niet bepaald de grenzen / bottlenecks waar men tegen aan kan lopen. Hierdoor weet ik niet precies welke hardware meer geschikt is voor de software als de andere, bijvoorbeeld bij cpu's. Voor mij geldt, als het werkt dan werkt het, maar de vraag blijft eigenlijk dan wel, tot waar blijft het goed lopen?

Laten we het even simpel houden. Er is een programma geschreven die drie dingen kan:
- Request solve math.
- Receive math solution.
- Receive info.

Een server app wordt dan ontworpen door mijn als 1 process per core. Dus bij een quad core kun je 4 server apps draaien die zich zullen melden bij een main server app die dan clients zal verdelen over de draaiende servers.

Nu zullen er dan bijvoorbeeld 32 clients continue 'request solve math' versturen naar de server waarmee ze zijn verbonden. De server gaat meteen aan de slag of houdt de aanvraag even vast in het geheugen om er later mee verder te gaan. Mogelijk indien nodig worden alle clients voor de software verteld via receive info dat client x een 'request solve math' heeft ingedient. Dus continue een beetje sommetjes verwerken, tijdelijk in het geheugen zetten of de oplossing terugsturen, niks boeiends.

Aangezien deze test omgeving bij mij thuis zal draaien vind ik de performance per watt erg interessant. Het liefst zou ik zelfs heel zuinige hardware willen gebruiken. Zo vond ik vandaag een leuke combinatie en wil graag weten hoe zo een pc zich zou gedragen.

- Celeron J1900 quad core (tdp 10 watt).
- 8GB Crucial sodimm ddr3 lv.
- Crucial MX200 250GB SSD.
- Onboard realtek LAN.

Haha een Celeron?! Maak je een grapje? Waarom niet zou ik zeggen. Deze chip heeft 4 redelijk snelle kernen met een heerlijk laag verbruik. Heb ik een peperdure Xeon wel echt nodig voor mijn simpele rekensommetjes? Het belangrijkste verschil zou volgens the world wide web de cache zijn. De Celeron heeft veel minder cache en zal snelle neigen om naar het werkgeheugen te grijpen als een Xeon. Maar wanneer loop je tegen zo een probleem aan? Ik kan mij niet zo goed uit met CPU stalls door cache problemen dus zie daarom de verschillen niet tussen de Celeron en de Xeon (behalve de hogere waardes en prijs).

Wat gebeurd er bij zo een simpele realtek netwerk interface als je daar continue max 6MB/s aan rekensommetjes naar toe gaat spammen verdeeld over verschillende packets van verschillende clients?

Daarbij zit ik ook met de netwerk hardware. Ik heb recent een mooie D-Link 868L gekocht waar ik uit reviews kon opmaken dat deze vele verschillende verbindingen en veel verkeer goed moet kunnen handhaven. Deze lijkt mij dan zover mijn kennis wel geschikt voor een zakelijk netwerk. Als ik nu een zooi van deze el-cheapo servers in het netwerk wil hangen heb ik nog een leuke oude Edimax 24 poort rack mount switch (was destijds 80 euro) liggen. Opzich deed hij het altijd goed in een prive omgeving maar zal zo een ding ook geschikt zijn om dan een zooi van deze budget servers achter te hangen of zal deze dat niet trekken of wellicht andere problemen veroorzaken omdat het geen managed switch is?

Let wel op, het gaat hier voornamelijk om servers voor entertainment (zoals games) en wat proef projecten die mogelijk na voltooien op echte servers draaien ergens op andere locaties.

TLDR: waar kan ik me meer inlezen over bottlenecks die bij hardware kunnen ontstaan als je het zwaar wil gaan belasten? :)

[ Voor 5% gewijzigd door Sir_Hendro op 15-07-2015 13:36 ]

GTA VI - All aboard the hype train!!


  • Question Mark
  • Registratie: Mei 2003
  • Laatst online: 28-11 16:59

Question Mark

Moderator SSC/WOS

F7 - Nee - Ja

Zonder te weten hoe je applicatie precies werkt, kan er nauwelijks aangegeven worden waar de bottleneck gaat zitten. Je hebt het over "zwaar belasten", maar dat is een erg brede omschrijving, te breed om je vraag te kunnen beantwoorden...

On a sidenote: waarom zou je dit uberhaubt zelf willen hosten? Is het niet een veel betere keuze om de infrastructuur als dienst af te nemen bij Azure of Amazone? Dan kun jij blijven doen waar je goed in bent (app's schrijven), en regelen zij de complete infrastructuur wel.

Blijkt de infrastructuur niet te voldoen (te weinig cpu, of memory bv), dan is dat met een paar muisklikken aangepast...

MCSE NT4/2K/2K3, MCTS, MCITP, CCA, CCEA, CCEE, CCIA, CCNA, CCDA, CCNP, CCDP, VCP, CEH + zwemdiploma A & B


  • Sir_Hendro
  • Registratie: Augustus 2006
  • Laatst online: 22:33
Als starter is het financieel interessanter om het eerst allemaal zelf te hosten. Je koopt een zooi goedkope servers. Daarna heb je alleen nog maar verbruikskosten van stroom. Een dienst afnemen zal weer maandelijkse kosten opleveren waar ik zeker hoe dan ook van gebruik zal moeten maken in een later stadium. Maar vooral als beginner lijkt mij het juist beter om het zelf allemaal te gaan hosten. Vandaar de vraag :)

GTA VI - All aboard the hype train!!


  • brid
  • Registratie: Januari 2001
  • Laatst online: 19-11 18:24

brid

Onze excuses voor het ongemak

Zoals Question Mark al aan geeft, probeer eens een cloud dienst.
Je betaald per minuut dat het systeem aanstaat en je kan een trail aanvragen om het 1 en ander te testen

DIY NAS, Hoofd PC
Unchain your pc/laptop, buy a SSD!!!!!


  • MAX3400
  • Registratie: Mei 2003
  • Laatst online: 16:40

MAX3400

XBL: OctagonQontrol

Ik weet wat voor effecten mijn code heeft op de hardware maar ken niet bepaald de grenzen / bottlenecks waar men tegen aan kan lopen
Dat snap ik niet. Je weet hoe "hard" jouw code tegen hardware duwt. Maar je weet niet wat dan de volgende logische/fysieke bottleneck gaat worden?

Zijn daar niet al jaren benchmarks voor bedacht die zowel voor low-budget hardware als wel voor military-grade clusters precies laten zien wat voor load welk effect heeft op de hardware?

Mijn advertenties!!! | Mijn antwoorden zijn vaak niet snowflake-proof


  • kokkel
  • Registratie: September 2000
  • Laatst online: 27-11 13:11
Wat heb je al geprobeerd wat zijn de resultaten hiervan.

Je zou een normale pc kunnen gebruiken om te gaan benchmarken.

Mijn persoonlijke ervaring is dat programeurs er nogal een potje van maken, door inefficient te programmeren extreme load op netwerk. Denk hier aan random sessies opzetten, dit is in een LAN omgeving geen probleem totdat het over een WAN of door een firewall systeem moet.
# Dit kan efficienter door o.a. data in bulk te versturen, met fixed poorten.

Daarnaast zie je dat veel CPU power en Memmory wordt gebruikt zonder dat het programma echt iets doet. Wederom een stukje inefficient programmeren, een mogelijke oplossing hiervoor weet ik niet.

Verklaring inefficent is in deze context het omgaan van technische resources, niet de snelheid van programmeren.

  • marcop82
  • Registratie: Maart 2013
  • Niet online
Ik omarm het feit dat software bepaald hoeveel er met hardware gedaan kan worden. Uiteindelijk is hardware X snel, maar door inefficiënt gebruik van de beschikbare hardware, kan dat een fractie van die snelheid benutten.

Kijk maar naar de demo-scene die door extreme optimalisatie en kennis van een specifieke hardware er de meest onmogelijk geachte zaken op kunnen weergeven. Terwijl een slecht-lopend stuk software een hele cluster op zijn knieën kan krijgen door het gebrek aan optimalisatie of enige vorm van programmeren naar de hardware. Twee extremen, maar ze bestaan.

Het lijkt me dus eerder verstandig dat je software naar een bepaalde hardware "target" ontwikkelt en hiervoor optimaliseert, omgekeerd lijkt me een totale gok waar de bottlenecks gaan zitten. Dan lijkt het me inderdaad beter om eerst te gaan testen met schaalbare cloud services om zo de bottlenecks te identificeren.

  • _Arthur
  • Registratie: Juli 2001
  • Laatst online: 28-11 20:44

_Arthur

blub

Sir_Hendro schreef op woensdag 15 juli 2015 @ 14:07:
Een dienst afnemen zal weer maandelijkse kosten opleveren
Bij AWS betaal je per uur; http://aws.amazon.com/pricing/?nc2=h_ql_reinvent

  • MAX3400
  • Registratie: Mei 2003
  • Laatst online: 16:40

MAX3400

XBL: OctagonQontrol

Een uur een hele dikke instance opstarten en miljarden cycles genereren aan (in-)efficiente code, levert ook een aardig bedrag op wat uiteindelijk die maand betaald moet worden. ;)

Mijn advertenties!!! | Mijn antwoorden zijn vaak niet snowflake-proof


  • pablo_p
  • Registratie: Januari 2000
  • Laatst online: 26-09 08:28
Wat je vraagt is een kip-en-ei probleem. Je wilt weten wat voor hardware je nodig hebt om je applicaties goed te kunnen draaien, maar daarvoor moet je eerst performance testen doen op test hardware doen om te weten wat je nodig hebt. Je bent zelf ontwikkelaar, maar door beperkte ervaring met performance testen, is het bijna black-box performance testen.

Performance wordt beperkt door CPU, memory size, memory speed (minder)of storage IOPS. Wil je serieus testen, dan moet eerst bedenken wat een representatieve load is (aantal sessies, gedrag per sessie (tijdsduur, soorten en aantal acties)). Vervolgens zet je je applicatie platform op een redelijk hardware en ga je performance meten (bv avarage en max response time). Daarna ga je spelen met de resources (cpu/memory/storage) om te kijken welke factor beperkend is en welke niet. Dan krijg je een idee waar de bottleneck zit en kan je daar je (virtuele) hardware op afstemmen

Dit is wel wat om op te zetten, maar als je dit eenmaal goed gedaan hebt, kan je makkelijk andere verhoudingen in hardware of verschillende virtuele providers vergelijken. Maar net zo belangrijk: de impact van wijzigingen in je eigen code of het gedrag van clients bepalen.

Let op dat je de load van de test-sessies representatief en 'random' maakt. Als voorbeeld: een fileserver testen door 10.000 maal dezlefde file ophalen betekent dat hij vanuit memory-chace wordt geserveerd en dus geen IOPS vereist. Een fileserver die concurrent 1000 random files uit een collectie van 1.000.000 files van 30 MB wat moet halen loopt wel tegen IOPS aan.

  • Sir_Hendro
  • Registratie: Augustus 2006
  • Laatst online: 22:33
Opzich wel een goed idee om een soort simulator te schrijven die het werk zal doen zoals de echte apps op willekeurige methodes. Het moet sowieso wel mogelijk zijn om de server software zo te schrijven dat het perfect op een Celeron server loopt. Bedankt voor de tips so far. :)

GTA VI - All aboard the hype train!!

Pagina: 1