ID.nl logo
Wat is multithreading en wat heb je er aan?
© Reshift Digital
Huis

Wat is multithreading en wat heb je er aan?

De afgelopen jaren is het aantal cores in mainstream desktopplatformen flink toegenomen. Er is nu zelfs een 16core-processor te krijgen. Maar wat is multithreading nou precies? En wat zijn de technische beperkingen en uitdagingen die hiermee gepaard gaan?

Toen in de jaren 2000 bleek dat de kloksnelheden van processors niet onbeperkt verhoogd konden worden, werd de keuze gemaakt om in te zetten op meer processorcores. Een systeem met meerdere cores was niet nieuw. Servers hadden al langere tijd multisocket-moederborden, met ondersteuning voor meerdere processors. Doordat nu meerdere cores werden geïntegreerd in een enkele zogenoemde ‘die’, werd multithreading een stuk toegankelijker.

Het daadwerkelijk goed benutten van die extra cores loopt wel achter op de technische verbeteringen. Sommige programma’s zijn goed geoptimaliseerd voor multithreading en kunnen 16 cores benutten, maar dit is lang niet altijd het geval. Dit heeft meerdere oorzaken, waar we nu naar gaan kijken.

Wat zijn threads?

Allereerst is het belangrijk om onderscheid te maken tussen processen en threads. Elk proces beschikt over zijn eigen geheugensegment en opereert in principe compleet onafhankelijk van andere processen. Het besturingssysteem voorkomt elke poging van een proces om bij het geheugen van een ander proces te komen. Daarentegen zijn threads niet volledig onafhankelijk. Ze kunnen bij het geheugen van andere threads komen, maar het is wel een andere ‘draad’ van executie, die tegelijkertijd met de andere threads wordt uitgevoerd. Een proces kan meerdere threads hebben, maar een thread kan zelf geen eigen processen hebben.

Er zijn twee soorten threads: software-threads en hardware-threads. Het aantal software-threads wordt bepaald door het totale aantal ‘draden’. Dit kan veranderen, afhankelijk van het opstarten en afsluiten van programma’s. Wanneer we in dit artikel het woord thread zonder kwalificatie gebruiken, bedoelen we software-threads.

Het aantal hardware-threads ligt juist vast, en is afhankelijk van het aantal cores en of er Simultaneous Multithreading (SMT) wordt ondersteund. Een 8core-processor met SMT heeft bijvoorbeeld 16 threads.

Ideaal is een situatie waarbij er evenveel software-threads zijn als hardware-threads. Wanneer er minder software-threads zijn, wordt de hardware niet efficiënt benut. Dat spreekt voor zich, maar ook een te groot aantal software-threads kan negatief uitpakken voor de prestaties.

Threads versus processen

Zowel processen als threads kunnen gebruikt worden voor ‘concurrency’, een term die iets breder is dan multithreading, omdat het alles omvat waarbij meerdere taken tegelijkertijd worden uitgevoerd. Het voordeel van het gebruik van processen is dat het crashen van een proces niet leidt tot het beëindigen van het programma: Google gebruikt voor zijn Chrome-browser bijvoorbeeld meerdere processen om de stabiliteit te verbeteren.

Het grote nadeel is dat het opstarten van een proces veel trager is dan het starten van een thread. Dit is vooral het geval op Windows, waarbij alle bronnen van tevoren toegekend moeten worden. Linux heeft een andere implementatie, waarbij een proces zichzelf kan klonen. Deze kloon of ‘fork’ heeft toegang tot alle bronnen van het eerste proces. Door copy-on-write krijgt het tweede proces pas zijn eigen kopie van delen van het geheugen, als het ernaar probeert te schrijven. Dit zorgt voor veel efficiëntere multiprocessing dan op Windows, waarbij het zoals gezegd voor het creëren van een proces noodzakelijk is dat alle bronnen van tevoren toegewezen worden.

©PXimport

Aangezien threads dezelfde bronnen delen, is het makkelijker voor threads om te communiceren dan voor processen (maar zoals in de paragraaf ‘Gezamenlijk geheugengebruik’ wordt uitgelegd, is dit ook erg gevaarlijk). Inter-process communication is een kunst op zich en dat gaat vaak via omwegen die veel zwaarder en trager zijn dan wat voor threads mogelijk is. Niettemin is er een plaats voor multiprocessing en dit is vaak ook een stuk eenvoudiger te programmeren dan multithreading.

Sommige taken zijn relatief eenvoudig multithreaded te maken, dit geldt bijvoorbeeld voor 3D-rendering en encoderen onder. Andere programma’s, zoals computer assisted design (CAD), zijn dan weer noodgedwongen singlethreaded. Dit is niet willekeurig, maar hangt af van hoe geschikt een bepaald programma is voor multithreading.

Rekenen

Het belangrijkste punt is dat er zo min mogelijk afhankelijkheidsrelaties moeten zijn. In wiskundige termen moet de taak associatief zijn, wat inhoudt dat het niet uitmaakt in welke volgorde hij wordt uitgevoerd. De plusoperatie is bijvoorbeeld associatief, waardoor de volgende simpele berekening prima in een andere volgorde kan worden uitgevoerd: x = 4 + 2 + 5 + 6.

We zouden deze som met of zonder afhankelijkheid kunnen uitvoeren. In het eerste geval berekenen we eerst 4 + 2, vervolgens 6 + 5 en uiteindelijk 11 + 6. Tijdens elke stap hebben we de uitkomst van de vorige berekening nodig. Stel dat we dit anders doen, dat we eerst 4 + 2 berekenen, dan 5 + 6 en tot slot de uitkomst hiervan bij elkaar optellen. Het aantal benodigde berekeningen verandert niet, dat blijft drie, maar de afhankelijkheid is verminderd.

Voor de mens wordt het er niet makkelijker op, maar een cpu zou de eerste twee berekeningen tegelijkertijd kunnen uitvoeren, waardoor er (uitgaande van een enkele klokcyclus voor de add-instructie) maar twee klokcycli nodig zijn en niet drie. Dit voorbeeld dient ter illustratie, want als deze getallen worden ingevoerd als ‘literals’ (vaste getallen), weet een beetje compiler wel het juiste antwoord direct in te voeren.

©PXimport

Heel spannend klinkt dit misschien niet, maar de vorige paragraaf verklaart waarom bijvoorbeeld het encoderen van video zo goed als perfect multithreaded is. Het beeld wordt opgedeeld in bijvoorbeeld zestien verschillende delen. Deze hebben ieder niets te maken met de andere delen, waardoor processorthreads er onafhankelijk aan kunnen werken. Uiteindelijk wordt het beeld samengevoegd, iets wat wel afhankelijk is van de eerdere berekeningen, maar triviaal is daarmee vergeleken.

Het verklaart ook waarom sommige andere taken heel slecht geschikt zijn voor multithreaded, zoals CAD en sommige Photoshop-filters. Deze hebben een zeer hoge mate van afhankelijkheid van andere delen van een foto, waardoor het niet mogelijk is om de taak op te splitsen in verschillende delen. Het gevolg is dat er minder threads aan kunnen werken.

In hoeverre multithreading de prestaties kan verbeteren, kan uitgerekend worden op basis van het deel van het werk dat parallel te maken is. Dit heet de wet van Amdahl en luidt als volgt: 1 / (1 – p), waarbij p staat voor het deel dat te parallelliseren is. Een programma waarbij de helft geschikt is voor multithreading, kan met een onbeperkt aantal cores maximaal twee keer zo snel worden. Dit is omdat het voor de helft van de tijd niet uitmaakt hoeveel cores er zijn.

Thread-safety en cache coherence

Drie termen die vaak worden gebruikt in combinatie met multithreading zijn thread-safe, thread-unsafe en thread-compatible. Dit gaat altijd over delen van een bepaald programma, oftewel functies. Allereerst heb je functies die thread-unsafe zijn. Deze kunnen überhaupt niet vanuit meerdere threads gebruikt worden. Dit is vrijwel altijd het resultaat van slecht programmeerwerk. Het standaardniveau is thread-compatible. Dit betekent dat de functie geen problemen oplevert, zolang er niets naar het geheugen wordt geschreven.

Zonder wijzigingen is er ook geen synchronisatie noodzakelijk. Het hoogste niveau is thread-safe. Dit betekent dat er data wordt gewijzigd, maar dit levert geen problemen op dankzij de synchronisatiemechanismes die we verderop bespreken.

©PXimport

Iets wat multithreading heel ingewikkeld maakt, is het probleem van ‘cache coherency’, een van de fundamentele uitdagingen in de computerwetenschap. Dit gaat over de vraag hoe je ervoor zorgt dat het geheugen consistent is wanneer er meerdere programma’s zijn die hetzelfde geheugen lezen en ernaar schrijven. Het grote probleem is dat deze lees- en schrijfoperaties via de cache gebeuren, omdat deze vele malen sneller is dan het werkgeheugen. Aangezien iedere core zijn eigen cache heeft, kan het gebeuren dat de waarde hier verschilt met die in het geheugen, doordat een andere thread het geheugen heeft veranderd, of doordat de huidige thread de cache heeft aangepast en deze nog niet is bijgewerkt in het geheugen.

Gezamenlijk geheugengebruik

Op zich is het geen enkel probleem als er meerdere threads gebruik willen maken van hetzelfde geheugen, zolang er maar geen enkele thread is die naar het geheugen schrijft. Als er meerdere threads naar het geheugen schrijven, is dat zeker een probleem. Dit maakt multithreading onmiddellijk een stuk moeilijker … en gevaarlijker! Om een heel simpel voorbeeld te geven: stel dat er een programma is met een functie die enkel een teller verhoogt. Het volgende is een voorbeeld in C++:

void incr(){
static int i = 0;
++i; }

We willen dit programma graag multithreaded maken. Simpeler dan dit kan niet, dus je zou verwachten dat dit geen problemen zou kunnen geven. Helaas niet. Er gaat veel meer gepaard met het verhogen van een teller dan je zou verwachten. Dit heet een RMW- operatie: read-modify-write. Het systeem moet eerst uitlezen wat de teller is (bijvoorbeeld door het te kopiëren naar een processorregister), vervolgens dit aantal verhogen met 1 en dit daarna terugschrijven naar de geheugenlocatie. Vooral deze laatste stap gaat gepaard met een aanzienlijke vertraging. Wat als de teller op 2 staat en de functie wordt twee keer tegelijkertijd aangeroepen? In beide gevallen zal de functie 2 lezen en zal de verhoging daarom uitkomen op 3, terwijl het eigenlijk 4 zou moeten zijn.

Het kan nog erger. Het uitlezen ging het vorige voorbeeld immers nog netjes, ondanks het gelijktijdig beschrijven van exact hetzelfde geheugen. We krijgen óf de waarde van voor de laatste verandering óf die van daarna, maar niet iets anders. Dit is lang niet op alle processorarchitecturen zo (maar wel op x86). In een ander geval kan de tweede functie een willekeurig getal uitlezen, bijvoorbeeld 284 of -90. Dit getal wordt dan netjes vermeerderd met 1, maar het komt helaas op iets anders uit dan de 4 die we willen hebben. Het resultaat is ongedefinieerd gedrag, wat inhoudt dat er geen enkele garantie is voor wat de uitkomst is.

Een race-conditie is wanneer de uitkomst van een programma afhangt van de volgorde waarin of de tijd waarop bepaalde code toevallig wordt uitgevoerd. Een programma hoort deterministisch en daarmee voorspelbaar te zijn, dus een goed programma hoort vrij te zijn van race-condities. Wat we willen, is dat de tweede oproep van de functie netjes wacht totdat de vorige klaar is, en dat hij daarom ook de nieuwe waarde leest. Hiervoor is synchronisatie noodzakelijk, iets wat we hierna bespreken.

©PXimport

Mutex en Atomics

Een veelgebruikt synchronisatiemechanisme is een ‘mutual exclusion object’ (mutex). Een mutex is vergelijkbaar met een ‘stoplicht’, dat voorkomt dat meerdere threads tegelijkertijd bij een bepaald deel van het geheugen kunnen komen. Een thread die toegang wil, zal eerst een vrije mutex op ‘slot’ zetten. Elke volgende thread die bij de mutex komt, zal geblokkeerd worden totdat de mutex weer vrijgegeven wordt door de eerste thread.

Mutexen hebben alleen wel de nodige problemen. Zo zijn ze relatief sloom en gevaarlijker is het probleem van potentiële deadlocks. Dat is wanneer verschillende delen van een programma meerdere van dezelfde mutexen nodig hebben, dan kan het gebeuren dat een benodigde mutex nooit vrijgegeven wordt en dat het programma blijft hangen. Deze kans is nog aanzienlijker wanneer met andere mutexen beschermde delen van het programma afhankelijk zijn van elkaar. Als deze dan tegelijkertijd gedraaid worden, dan wacht de ene thread op een vrije mutex totdat hij zijn eigen mutex vrijgeeft, terwijl de eerste mutex niet vrijkomt totdat de eerste thread klaar is met zijn werk. Er moet dus op een goed doordachte manier geprogrammeerd worden. Een simpel voorbeeld in C++:

void incr(){
static mutex mut1;
static int i = 0;
lock_guard<mutex> lck(mut1); </mutex>
++i;
} // mutex wordt automatisch vrijgegeven

In sommige gevallen kan het lonen om in plaats van een gewone mutex een ‘reader writer’-mutex te gebruiken. Deze kan of aan één thread schrijftoestemming geven of aan een onbeperkt aantal threads leesbevoegdheid. Aangezien alleen veranderend geheugen race-condities oplevert, kan dit de prestaties verbeteren als er maar weinig naar het beschermde geheugen wordt geschreven.

Concurrency-problemen kunnen in sommige gevallen ook opgelost worden door het gebruiken van variabelen die geen tussenstaat laten zien. Deze heten ‘atomics’ in C en C++, en ‘volatile’ variabelen (vluchtige variabelen) in Java en C#. Als we een atomische variabele gebruiken voor ons eerdere scenario, dan begint de tweede operatie pas wanneer de eerste klaar is. Dan heb je niet het probleem dat een van de vermeerderingen potentieel verloren gaan.

Volgorde

Simpele atomics lossen niet alle problemen op. Atomische variabelen kunnen ook garanderen dat bepaalde code in een voorgeschreven volgorde wordt uitgevoerd. Elke atomische operatie heeft een bepaalde ‘memory barrier’, ook wel ‘memory order’ genoemd. Deze barrière bestaat uit een ‘acquire’-laadoperatie die wordt gekoppeld aan ‘release’-opslagoperatie. Tussen deze twee operaties wordt er een zogenoemde ‘çritical section’ gecreëerd. Instructies binnen dit deel is sterk beperkt in herordening: ze mogen niet buiten de sectie worden gebracht door de compiler of de processor. Dit garandeert dat alle instructies binnen (en voor) dit deel zijn uitgevoerd wanneer er een ‘acquire’ wordt uitgevoerd. Ook wordt er gegarandeerd dat de laatste waarde van de atomische variabele is geschreven naar het geheugen en de caches, zodra de acquire is uitgevoerd.

Als er toegang wordt gevraagd voordat het systeem hier klaar mee is, wordt toegang tot de betrokken delen van het geheugen geblokkeerd. Dit om te voorkomen dat er iets gebeurt met de tussenstaat van de variabele. Hier zijn speciale machine-instructies voor, die het werk efficiënter kunnen verrichten dan een mutex. Het volgende voorbeeld laat zien hoe dat werkt.

void incr(){
static atomic<int> i(0); </int>
++i; }

In de praktijk komt dit erop neer dat een ‘release’ informatie publiceert die een ‘acquire’ kan opvragen (bij een RMW-operatie is er een gecombineerde acquire en release). Waar zou dit nuttig voor kunnen zijn? Veel systemen moeten van een valide staat naar een andere valide staat gebracht worden, zonder dat er het een en ander kan gebeuren in de tussenstaat. Om maar een voorbeeld te geven: bij het uitvoeren van een banktransactie is het een goed idee om zowel de vermindering als de vermeerdering op de respectieve rekeningen als een alles-of-niets-transactie uit te voeren.

Het voordeel van atomics ten opzichte van een mutex, is dat ze sneller zijn en dat deadlocks niet tot de mogelijkheden behoren. Het nadeel is dat ze nog altijd substantieel langzamer zijn dan gewone variabelen, vooral wanneer het gaat om schrijfacties. Veranderingen moet immers verspreid worden naar niet alleen de verschillende caches, maar ook naar het werkgeheugen. In de tussentijd mag er geen enkele andere thread gebruikmaken van de oude waarde. Een verder nadeel is dat niet alles met atomische variabelen geïmplementeerd kan worden. Programma’s die hier wel gebruik van maken, heten ‘lockfree’, omdat ze geen gebruikmaken van een mutex-slot.

▼ Volgende artikel
Nieuwe Resident Evil Requiem-beelden tonen wat je te wachten staat
Huis

Nieuwe Resident Evil Requiem-beelden tonen wat je te wachten staat

Capcom heeft eerder deze week een livestream uitgezonden waarin nieuwe beelden werden getoond van het aankomende horrorspel Resident Evil Requiem. Ook werd er meer informatie gegeven over de game.

Nieuw op ID: het complete plaatje

Misschien valt het je op dat er vanaf nu ook berichten over games, films en series op onze site verschijnen. Dat is een bewuste stap. Wij geloven dat technologie niet stopt bij hardware; het gaat uiteindelijk om wat je ermee beleeft. Daarom combineren we onze expertise in tech nu met het laatste nieuws over entertainment. Dat doen we met de gezichten die mensen kennen van Power Unlimited, dé experts op het gebied van gaming en streaming. Zo helpen we je niet alleen aan de beste tv, smartphone of laptop, maar vertellen we je ook direct wat je erop moet kijken of spelen. Je vindt hier dus voortaan de ideale mix van hardware én content.

Nadat eind vorig jaar al werd aangekondigd dat spelers niet alleen Grace Ashcroft zullen besturen, maar ook Leon S. Kennedy - een bekend gezicht voor mensen die eerdere delen hebben gespeeld - werd er tijdens de livestream uitgebreid gameplay van dit personage getoond.

Twee verschillende hoofdpersonages

Daarbij werd de nadruk gelegd op de verschillende speelstijlen van Leon en Grace. Op verschillende momenten gedurende de game wordt er automatisch tussen deze personages gewisseld, en ze zullen elk compleet andere gameplay bieden.

De segmenten met Leon - onder andere bekend uit Resident Evil 2 en Resident Evil 4 - zijn erg op actievolle schietgevechten gericht. Leon kan daarnaast ook de kelen van vijanden doorsnijden. Hij heeft ook een bijl waarmee hij aanvallen kan afweren. Grace's segmenten zijn juist erg gericht op spanning en horror en draaien vooral om het vermijden van intense gevechten.

Tijdens de livestream werd ook onthuld dat de game niet alleen naar consoles en pc komt, maar dat leden van Nvidia GeForce Now de game ook kunnen spelen. Ook werd er gepraat over de verschillende moeilijkheidsgraden - zo is er een extra makkelijke moeilijkheidsgraad voor mensen die weinig ervaring hebben met dit type spellen.

De complete livestream kan hieronder worden bekeken. In verband met de volwassen inhoud van de livestream kan het mogelijk zijn dat je op de link in de video moet klikken om naar YouTube te gaan en te bewijzen dat je volwassen bent.

Vanaf 27 februari verkrijgbaar

Resident Evil Requiem verschijnt op 27 februari (pre-orderen kan nu al) voor PlayStation 5, Xbox Series X en S, Nintendo Switch 2 en pc. Het is het negende hoofddeel in de horrorserie die al sinds de jaren negentig bestaat. In de loop der jaren is de franchise meermaals flink op de schop gegaan. Zo richtte Resident Evil 4 zich meer op actie, en zijn horrorelementen sinds Resident Evil 7: Biohazard weer teruggekeerd. Resident Evil Requiem lijkt dan ook een combinatie van al deze elementen te gaan bieden.

Op 27 februari zullen overigens ook Resident Evil 7 en Resident Evil Village (het achtste deel) op Nintendo Switch 2 uitkomen. Daarnaast verschijnt Village later deze maand op PlayStation Plus en Xbox Game Pass.

Watch on YouTube
▼ Volgende artikel
Slechte wifi thuis? Dit zijn de 3 grootste wifi-fouten die je signaal verpesten
© chadchai - stock.adobe.com
Huis

Slechte wifi thuis? Dit zijn de 3 grootste wifi-fouten die je signaal verpesten

Je kijkt een spannende serie en opeens bevriest het beeld. Dat bekende draaiende cirkeltje… er zijn weinig dingen zó frustrerend. Gelukkig ligt de oplossing vaak binnen handbereik. De snelheid van je internet hangt namelijk sterk samen met de manier waarop je thuis met je apparatuur omgaat. Door een paar veelgemaakte fouten te vermijden en de juiste techniek te kiezen, merk je vaak direct dat je netwerk stabieler wordt, zonder dat daar een duurder abonnement voor nodig is.

In het kort

In dit artikel lees je welke drie wifi-fouten het vaakst zorgen voor traag internet of haperingen: een onhandige plek voor je router, drukte op 2,4 GHz en verouderde firmware of hardware. Je ziet ook hoe je zelf een rustiger kanaal vindt en wanneer het slim is om te kiezen voor 5 GHz of 6 GHz. Tot slot leggen we uit wat wifi 6 en wifi 7 doen en waarom een netwerkkabel van minimaal cat5e verschil kan maken.

Lees ook: Router of powerline-adapter: wat is de beste keuze voor betere wifi?

Fout 1: De router op de verkeerde plek neerzetten

Een router wint qua looks zelden een schoonheidsprijs. De neiging om het apparaat uit het zicht te plaatsen is daarom groot. Toch is een verkeerde locatie de meest gemaakte fout die je bereik merkbaar (en soms zelfs dramatisch) kan verkleinen.

Dat zit zo.  Je kunt wifi-signalen vergelijken met het licht van een gloeilamp. Als je die lamp in een houten kast of achter een dikke bank zet, blijft de rest van de kamer donker. Obstakels zoals muren, meubels en zelfs grote kamerplanten blokkeren de onzichtbare golven. Vooral metaal en water zijn beruchte boosdoeners; een router naast een aquarium of achter een radiator plaatsen is vragen om problemen.

Ook de hoogte is bepalend. Veel mensen zetten de router op de grond, maar op de grond zit het signaal sneller 'achter' meubels en andere blokkades. Zet het apparaat liever op een kast of boekenplank op ooghoogte voor een vrije weg naar je apparaten.

©ID.nl

Fout 2: Storing door andere apparatuur over het hoofd zien

Je staat er waarschijnlijk niet bij stil, maar veel apparaten in huis gebruiken dezelfde onzichtbare digitale snelweg als je internetverbinding. De magnetron, sommige babyfoons en zelfs de draadloze koptelefoon van de buren vechten om een plekje op de 2,4GHz-band. Ook andere wifi-netwerken in de buurt kunnen voor digitale files zorgen.

De meeste moderne routers ondersteunen gelukkig ook de 5GHz-frequentie. Deze band is veel breder en heeft minder last van andere apparatuur. Het handmatig selecteren van het 5GHz-netwerk levert vaak direct een snelheidswinst op. Heb je een router met wifi 6e of wifi 7, dan kun je soms ook de 6 GHz-band gebruiken. Die is vaak rustiger, maar het bereik is meestal wat kleiner dan bij 5 GHz.

Tip: geef je netwerken duidelijke namen

Veel routers zenden meerdere wifi-netwerken tegelijk uit: 2,4 GHz voor bereik, 5 GHz voor snelheid en soms ook 6 GHz voor extra ruimte in drukke omgevingen. Als al die banden onder één naam vallen, kiest je smartphone of laptop automatisch. Dat gaat vaak goed, maar niet altijd: je toestel kan blijven “plakken” aan 2,4 GHz terwijl 5 GHz op dat moment sneller en stabieler is.

Door je netwerken een herkenbare naam te geven, maak je de keuze simpel. Geef de 2,4 GHz-band bijvoorbeeld de naam thuis-2g, de 5 GHz-band thuis-5g en, als je die hebt, de 6 GHz-band thuis-6g. Dan zie je in één oogopslag welk netwerk je pakt. Zit je ver van de router, dan is 2,4 GHz vaak de veiligste optie. Zit je dichtbij en wil je vooral snelheid, dan ligt 5 GHz of 6 GHz meer voor de hand. Zo kun je bij haperingen of traag internet meteen testen of een andere band het probleem oplost, zonder dat je in instellingen hoeft te graven.

View post on TikTok

Fout 3: Verouderde software en hardware blijven gebruiken

Technologie verandert razendsnel en dat geldt ook voor de beveiliging en snelheid van je netwerk. Veel huishoudens werken nog met de router die ze jaren geleden bij hun eerste abonnement kregen. Deze oude techniek kan de moderne eisen van streaming en videobellen simpelweg niet meer bijbenen. Daarnaast vergeten veel gebruikers om de firmware van hun apparaat te updaten. Fabrikanten brengen deze software-updates uit om prestaties te verbeteren en lekken te dichten. Een verouderd systeem is niet alleen trager, maar ook een makkelijker doelwit voor hackers.


1️⃣2️⃣3️⃣Stappenplan: de beste wifi-kanalen scannen

Als je buren ook allemaal op hetzelfde wifi-kanaal zitten, ontstaat er interferentie. Je kunt dit zelf eenvoudig oplossen door een rustiger kanaal te zoeken.

1) Download een app zoals WiFi Analyzer (Android) of NetSpot (Windows, macOS, Android & iOS).

2) Open de app en bekijk de grafiek van de omgeving. Je ziet hier welke kanalen drukbezet zijn door netwerken in de buurt. Noteer het kanaalnummer dat het minst wordt gebruikt. Vaak zijn kanaal 1, 6 of 11 op de 2,4GHz-band de beste keuzes.

3) Log in op de webinterface van je router via je browser (meestal via een adres als 192.168.1.1). Zoek naar de draadloze instellingen en wijzig het kanaal van 'Automatisch' naar het door jou gekozen nummer. Sla de instellingen op en test of je verbinding stabieler aanvoelt.

Het verschil tussen wifi 6 en wifi 7

Sta je op het punt om een nieuwe router of laptop te kopen? Dan kom je de termen wifi 6 en wifi 7 tegen. Wifi 6 was een grote stap vooruit omdat het beter omgaat met veel apparaten tegelijk op één netwerk. Het zorgt voor een efficiëntere verdeling van de data. Wifi 7 is de allernieuwste standaard en gaat nog een flinke stap verder. Het maakt gebruik van extreem brede kanalen en kan verbinding maken via meerdere frequenties tegelijkertijd. Dit wordt Multi-Link Operation genoemd. Hierdoor is de vertraging merkbaar lager en kun je hogere snelheden halen, vooral op korte afstand en met geschikte apparaten. Voor een gemiddeld huishouden is wifi 6 momenteel een uitstekende keuze, terwijl wifi 7 echt voor de toekomst is gebouwd.

Heel belangrijk: de juiste bekabeling

Draadloos internet begint voor de meeste mensen bij een kabel: heb je een los modem en een losse router, dan vormt de kabel ertussen de basis. Gebruik je hier een oude kabel, dan wordt de snelheid al beperkt voordat het signaal de lucht in gaat. Controleer of er Cat 5e, Cat6 of Cat6a op de kabel staat, dan zit je meestal goed. Cat5 haalt soms maar 100 Mbps door kwaliteit/afmontage. Heb je cat5 liggen? Vervang dat dan in ieder geval door cat5e; dat is een veilige keuze voor gigabit. Een kleine investering in een kwalitatieve netwerkkabel kan een wereld van verschil maken voor de uiteindelijke wifi-snelheid op je telefoon.

Slechte wifi? Oplossen is makkelijker dan je denkt

Alles bij elkaar komt goed wifi minder neer op toeval dan veel mensen denken. Met een slimme plek voor je router, een rustige frequentie en actuele software haal je vaak al verrassend veel winst. Combineer dat met een fatsoenlijke netwerkkabel en je voorkomt dat de dat de verbinding al beperkt wordt voordat het signaal draadloos wordt verspreid. Door deze stappen een voor een toe te passen, los je de meest voorkomende wifi-problemen op zonder dat een duurder internetabonnement nodig is, en maak je van een haperende verbinding weer een stabiele basis voor alles wat je online doet.

Consumenten testen: TP-Link Deco BE25 WiFi 7 mesh set

Op Review.nl, het testplatform waarop consumenten nieuwe technologie uitproberen en hun bevindingen delen, krijgt de TP-Link Deco BE25, een router met dualband wifi 7,  een stevige 8,7 op Review.nl. En dat betekent iets: want omdat op Review.nl producten getest worden door een panel van echte gebruikers, zie je hoe iets in een normaal huishouden presteert.

Wat opvalt is hoe vaak testers terugkomen op de snelheid en stabiliteit. De overstap naar wifi 7 levert volgens veel gebruikers merkbaar meer rust in het netwerk op, vooral in huizen waar voorheen op zolder, in de tuin of achterin de woonkamer nauwelijks een bruikbaar signaal was. De Deco BE25 vult dat soort gaten zichtbaar op. Apparaten blijven stabiel verbonden, streamen gaat zonder haperingen en ook gamers merken volgens de testers dat de latency laag blijft. Wie een gigabitverbinding heeft, ziet die snelheid nu ook daadwerkelijk terug op plekken waar dat eerst niet haalbaar was.

Een tweede punt dat veel lof krijgt, is de installatie. De meeste testers spreken over een proces van enkele minuten. De app begeleidt je stap voor stap, herkent automatisch de nieuwe units en geeft advies over de beste plek voor elk wifipunt. Daardoor voelt het hele systeem toegankelijk, ook voor wie zichzelf niet technisch vindt. Eenmaal ingesteld blijkt het netwerk bovendien weinig onderhoud nodig te hebben: de app verdeelt verkeer slim, laat je apparaten prioriteren en biedt opties voor gastnetwerken en ouderlijk toezicht.

Het ontwerp en de functionaliteit leveren wel discussie op. Een deel van de testers vindt de units wat groot en mist montageopties of extra ethernetpoorten. Ook melden sommige gebruikers dat smartphones niet altijd direct naar het dichtstbijzijnde wifipunt schakelen. Toch wordt dat in de meeste reviews gezien als een detail naast de verbeterde dekking en het gemak van dagelijks gebruik.

Alles bij elkaar laat het testpanel zien dat de Deco BE25 vooral scoort op prestaties waar consumenten echt iets van merken: hogere snelheden, betere dekking en een probleemloos installatieproces. Voor veel huishoudens voelt het als een upgrade die een onrustig wifi-netwerk verandert in een betrouwbaar en snel geheel.