PROJET AUTOBLOG


Shaarli - Les discussions de Shaarli

Archivé

Site original : Shaarli - Les discussions de Shaarli du 23/07/2013

⇐ retour index

GDC Vault - JPS+: Over 100x Faster than A*

mardi 16 juin 2015 à 17:23
Prog, actu, high tech : Liens en vracs 16/06/2015
Conférence GDC sur un algo de path finding qui semblerait plus rapide que A*, faut que je test ca
(Permalink)

How to receive a million packets per second

mardi 16 juin 2015 à 17:17
GuiGui's Show - Liens 16/06/2015
À lire absolument.

« Last week during a casual conversation I overheard a colleague saying: "The Linux network stack is slow! You can't expect it to do more than 50 thousand packets per second per core!"

That got me thinking. While I agree that 50kpps per core is probably the limit for any practical application, what is the Linux networking stack capable of? Let's rephrase that to make it more fun:

On Linux, how hard is it to write a program that receives 1 million UDP packets per second?

[...]

While we could have used the usual send syscall, it wouldn't be efficient. Context switches to the kernel have a cost and it is be better to avoid it. Fortunately a handy syscall was recently added to Linux: sendmmsg. It allows us to send many packets in one go. Let's do 1,024 packets at once.

With the naive approach we can do between 197k and 350k pps. Not too bad. Unfortunately there is quite a bit of variability. It is caused by the kernel shuffling our programs between cores. Pinning the processes to CPUs will help

[...]

While 370k pps is not bad for a naive program, it's still quite far from the goal of 1Mpps. To receive more, first we must send more packets. How about sending independently from two threads: [...] The numbers on the receiving side didn't increase. ethtool -S will reveal where the packets actually went: [...] Through these stats, the NIC reports that it had successfully delivered around 350kpps to RX queue number #4. The rx_nodesc_drop_cnt is a Solarflare specific counter saying the NIC failed to deliver 450kpps to the kernel.

Sometimes it's not obvious why the packets weren't delivered. In our case though, it's very clear: the RX queue #4 delivers packets to CPU #4. And CPU #4 can't do any more work - it's totally busy just reading the 350kpps. Here's how that looks in htop

[...]

Historically, network cards had a single RX queue that was used to pass packets between hardware and kernel. This design had an obvious limitation - it was impossible to deliver more packets than a single CPU could handle.

To utilize multicore systems, NICs began to support multiple RX queues. The design is simple: each RX queue is pinned to a separate CPU, therefore, by delivering packets to all the RX queues a NIC can utilize all CPUs. But it raises a question: given a packet, how does the NIC decide to which RX queue to push it?

Round-robin balancing is not acceptable, as it might introduce reordering of packets within a single connection. An alternative is to use a hash from packet to decide the RX queue number. The hash is usually counted from a tuple (src IP, dst IP, src port, dst port). This guarantees that packets for a single flow will always end up on exactly the same RX queue, and reordering of packets within a single flow can't happen.

[...]

This is pretty limited, as it ignores the port numbers. Many NICs allow customization of the hash. Again, using ethtool we can select the tuple (src IP, dst IP, src port, dst port) for hashing: [...] Unfortunately our NIC doesn't support it - we are constrained to (src IP, dst IP) hashing.

[...]

Since the hashing algorithm on our NIC is pretty limited, the only way to distribute the packets across RX queues is to use many IP addresses.

Hurray! With two cores busy with handling RX queues, and third running the application, it's possible to get ~650k pps!

[...]

We can increase this number further by sending traffic to three or four RX queues, but soon the application will hit another limit. This time the rx_nodesc_drop_cnt is not growing, but the netstat "receiver errors" are [...] This means that while the NIC is able to deliver the packets to the kernel, the kernel is not able to deliver the packets to the application. In our case it is able to deliver only 440kpps, the remaining 390kpps + 123kpps are dropped due to the application not receiving them fast enough.

The receiving performance is down compared to a single threaded program. That's caused by a lock contention on the UDP receive buffer side. Since both threads are using the same socket descriptor, they spend a disproportionate amount of time fighting for a lock around the UDP receive buffer.

[...]

Fortunately, there is a workaround recently added to Linux: the SO_REUSEPORT flag. When this flag is set on a socket descriptor, Linux will allow many processes to bind to the same port. In fact, any number of processes will be allowed to bind and the load will be spread across them.

With SO_REUSEPORT each of the processes will have a separate socket descriptor. Therefore each will own a dedicated UDP receive buffer. This avoids the contention issues previously encountered

1.126M pps  34.374MiB / 288.354Mb [...] This is more like it! The throughput is decent now!

More investigation will reveal further room for improvement. Even though we started four receiving threads, the load is not being spread evenly across them [...] wo threads received all the work and the other two got no packets at all. This is caused by a hashing collision, but this time it is at the SO_REUSEPORT layer.

[...]

I've done some further tests, and with perfectly aligned RX queues and receiver threads on a single NUMA node it was possible to get 1.4Mpps. Running receiver on a different NUMA node caused the numbers to drop achieving at best 1Mpps.

To sum up, if you want a perfect performance you need to:

   Ensure traffic is distributed evenly across many RX queues and SO_REUSEPORT processes. In practice, the load usually is well distributed as long as there are a large number of connections (or flows).

   You need to have enough spare CPU capacity to actually pick up the packets from the kernel.

   To make the things harder, both RX queues and receiver processes should be on a single NUMA node.

While we had shown that it is technically possible to receive 1Mpps on a Linux machine, the application was not doing any actual processing of received packets - it didn't even look at the content of the traffic. Don't expect performance like that for any practical application without a lot more work. »
(Permalink)

Doo's bookmarks 16/06/2015
un article intéressant sur le tweaking de la stack réseau linux :)
(Permalink)

• Après la CIC, comment réagit ma banque ?

mardi 16 juin 2015 à 16:46
Shaarli geek de geekz0ne.fr 16/06/2015
Bon, la Société Générale n'a pas gelé mon compte et m'a répondu ;)
(Permalink)

Mieux vaut être riche, bien portant et ne pas poser de questions, pour être client au CIC : Reflets

mardi 16 juin 2015 à 16:46
le hollandais volant 16/06/2015

— (permalink)

Où placer mon argent ? : vosfinances

mardi 16 juin 2015 à 16:28
Vinc3r's links 16/06/2015
Panorama des possibilités de placement actuellement offerts en France.
(Permalink)

Shaarli de Erase 16/06/2015
via http://www.nothing-is-3d.com/links/?6TXIXA (merci :) )
(Permalink)

Bill2's Links 16/06/2015
Pourquoi les banques ne font pas des tableaux aussi simples à lire ?
(Permalink)

Oros links 16/06/2015
Génial !
Tableau récapitulatif des différents types d’épargne bancaire avec le rendement, les risques, le plafond, ...
via http://links.bill2-software.com/shaarli/?B5AMWA
(Permalink)

Shaarli | Orangina Rouge 16/06/2015
Intéressant ! En résumé (je cite) : «
* __Livret A__ - rend. 1% :
Un rendement de plus en plus faible mais l'absence d'imposition et la disponibilité immédiate en fait un support idéal pour l'épargne de précaution. Y placer 6 mois de salaire. Utiliser un Livret jeune ou LEP si possible avant un livret A.
Disponible immédiatement. Max 23 k€.
* __Assurance vie__ - rend. variable 2,5 - 3% (fonds euros) / Performance boursière (unités de compte) : LE support pour construire et transmettre un patrimoine. Ouvrez-en une aujourd'hui pour prendre date. Aussi pour les enfants, dès leur naissance, plutôt qu'un livret A. Attention aux frais: privilégier les assurances vies en lignes sans frais sur les versements et pas plus de 0,6% par an de frais de gestion. Ne pas ouvrir son assurance-vie dans une grande banque. Ne pas tout placer sur le fonds en euros, affecter une partie sur des unités de compte pour dynamiser (en fonction de la tolérance au risque). Permet également de transmettre 150k€ en franchise de droits de succession.
Pas de blocage mais imposition des bénéfices si retrait avant 8 ans.
* __PEE__ - rend. selon supports disponibles dans le plan :
Le PEE est doublement intéressant: les gains sont défiscalisés et l'employeur peut abonder les versements (jusqu'à les tripler, plafond de 3400€/an) également sans imposition des abondements employeur.»

A jeter : __PEL__ «Le PEL n'est plus très intéressant avec la baisse des taux de crédit immobilier, et son taux d'épargne de 2% est inférieur à l'assurance-vie», __CEL__ «Plafond bas, rémunération quasi-nulle, le CEL n'a aucun intérêt », __SICAV__
(Permalink)

Shaarli ladmasmien 17/06/2015
Un reddit à fouiller pour savoir où placer l'argent que je n'ai pas (encore !).
(Permalink)

Une jolie nouveauté

mardi 16 juin 2015 à 16:24
Shaarlo 16/06/2015
Pour vous qui avez lié(s) votre shaarli à un profil, voilà une petite nouveauté qui devrait vous plaire :
-il est désormais possible de démarrer une discussion via le champ en haut de page (option à activer), lorsque vous saisissez quelque chose dans le champ puis le valider, vous êtes redirigés sur votre shaarli où vous validez votre message. Au retour sur le site, la discussion est rajoutée quasi instantanément au flux général.
-> le bouton Reshaarlier a été remplacé par un champ "Commenter" où le principe est quasiment le même, votre commentaire sera directement visible sur le site après soumission.
Vous continuez ainsi à contrôler vos données et le site est directement mis à jour comme si les commentaires étaient postés dessus.

j'essaie de maintenir le dépot git à jour au fur et à mesure (le code est waterprof xd)

EDIT : Alexis : aucun ! C'est un peu comme le bépo, on a beau savoir que c'est plus rapide, la courbe d'apprentissage fait trop peur. (je connais un seul utilisateur de Bépo)

EDIT 2 : Kevin, tu peux me dire comment tu fais pour que ça ne marche pas ? (version de ton navigateur, texte soumis pour la redirection) ?
(Permalink)

Prog, actu, high tech : Liens en vracs > Shaarlo 16/06/2015
Beau travail ! (Au passage, y'a vraiment des gens qui lisent en dotsie ? :p)
(Permalink)

Les liens de Kevin Merigot > Shaarlo 16/06/2015
Ah bah ça marche pas, j'ai perdu mon commentaire dans le coup... :(

Edit : ça marche toujours pas pour moi... Mais je vais sans doute passer à la version community.
(Permalink)

Shaarli de Erase > Shaarlo 16/06/2015
Hey, j'ai enfin mon favicon \o/ (et j'ai rien compris au système de badge mais j'ai un super Wizzard-of-the-coast-qui-tue et ça, ça roxxe du poney !) (et oui, c'est surtout pour tester le système de commentaire)

Edit : à noter que lors d'un ajout de commentaire, j'ai bien une nouvelle fenêtre qui s'ouvre, pré remplie pour le titre et l'url, mais vide dans la description. (Opera 26.0 sur eOS Luna)
Edit 2 : Aucun soucis sous Firefox 38. Par contre, le cadre "commenter" ne s'affiche plus ensuite sous le thread qu'on vient de commenter. Mais c'est peut être normal... Merci en tout cas :)
(Permalink)

Partager de Alpha à Zeta et bien plus... > Shaarlo 16/06/2015
pas mal les modifications apportées, ça va rendre encore shaarli.fr plus interactif.
(Permalink)

Tiens !? > Shaarlo 16/06/2015
hehe on est a un bouton d'amour de Reddit (pliz non) - super boulot merci !
(Permalink)

Katie, Shaarli and Kentaro > Shaarlo 16/06/2015
On ne chôme pas sur Shaarli.fr ! Merci pour les nouveautés et le dynamisme.
(Permalink)

Liens en vrac de SimonLefort > Shaarlo 16/06/2015
Même problème qu'Erase, le commentaire n'est pas rempli quand je suis redirigé vers mon Shaarli.

Mais ça reste cool de voir que ça bouge pas mal ici ! ;-) Merci pour l'énergie consacrée à la communauté.

[Edit: Ça n'a pas marché la première fois parce que je n'étais pas connecté sur mon Shaarli ! (J'ai donc eu la page de connexion et j'ai perdu le commentaire dans la foulée.]
(Permalink)

The Security of Network Address Translation  

mardi 16 juin 2015 à 16:21
Httqm's Links 16/06/2015
LAN / WAN / DMZ / routers explained with some fun plumbing metaphors ;-)
(Permalink)

Apple : "on présume que vous serez d'accord pour nous dédommager, ok ?"

mardi 16 juin 2015 à 16:20
Les Petits Liens Malfaisants 16/06/2015
"En clair, si Apple prend le flux RSS d'un média qui diffuse des contenus piratés, racistes, diffamatoires, etc., et se trouve donc à diffuser lui-même des contenus illicites, Apple demande au média de se porter garant et de le dédommager en cas de poursuites. Et il présume, par son courriel, que le blogueur est d'accord."

Les cons ça ose tout, c'est à ça qu'on les reconnait...
(Permalink)

Marylise Lebranchu face à Jean-Jacques Bourdin: le retweet de l'interview

mardi 16 juin 2015 à 15:29
Les liens de Kevin Merigot 16/06/2015
40€ en 2 ans, vraiment, il ne fallait pas...
(Permalink)

Choses vues, sur le web et ailleurs 17/06/2015
Je parcours distraitement le bouzin et je tombe là dessus : "Je vais déposer une loi de déontologie pour les fonctionnaires". Euh... WTF ? Le statut général de 1984, les statuts particuliers pour la FP d'Etat, pour la FP hospitalière de 1984 et 1986, ça sert à quoi alors ? Vous voulez que je vous rafraichisse la mémoire sur les droits et obligations des fonctionnaires ?

Et une loi inutile de plus, une !
(sauf si l'idée sous-jacente est d'enlever encore des droits, mais c'est complétement inenvisageable, bien sûr)

via Kevin
(Permalink)

Comment Gagner 2 Heures par Jour avec le Sommeil Polyphasique (Guide Simplifié) - SimpleToFit - Jeûne intermittent & kettlebells par Jérémy

mardi 16 juin 2015 à 15:23
some links − chabotsi 16/06/2015
Uberman o_O : 2h de sommeil par jour…

- Siesta : 6H + 1 nap de 20 minutes => 6H20 de sommeil total
- Everyman 2 : 4H30 + 2 naps de 20 minutes => 5H10 de sommeil total
- Everyman 3 : 3H + 3 naps de 20 minutes => 4H00 de sommeil total
- Everyman 4 : 1H30 + 4 naps de 20 minutes => 2H50 de sommeil total
- Uberman : 6 naps de 20 minutes => 2H de sommeil total
(Permalink)

La loi du plus fort | Pas de Voiture

mardi 16 juin 2015 à 15:17
@jeekajoo shaarlinks 16/06/2015
"""
Ceux qu’il faut éduquer, ce sont ceux qui sont dangereux, ce n’est pas aux enfants d’apprendre à faire particulièrement attention aux voitures mais aux automobilistes d’apprendre à faire particulièrement attention aux enfants, aux piétons de façon générale, aux animaux et à tout être évoluant dans l’espace public.
"""
(Permalink)

HowTommy | Liens et actu en vrac 17/06/2015
(Permalink)

La musique de cul du Jardin des Délices

mardi 16 juin 2015 à 15:01
Choses vues, sur le web et ailleurs 16/06/2015
600 ans après, on trouve encore des détails à exploiter dans le Jardin des délices de Jérôme Bosch...
(Permalink)

stuper 16/06/2015
C'était vraiment un timbré ce mec xd
(Permalink)

stuper 16/06/2015
C'était vraiment un timbré ce mec xd
(Permalink)

To Lose Weight, Eating Less Is Far More Important Than Exercising More

mardi 16 juin 2015 à 14:42
Httqm's Links 16/06/2015
Proclamations that people need to be more active are ubiquitous in the media. (...) Michelle Obama’s "Let’s Move" program places the focus on exercise as a critical component in combating excess weight and obesity.
(...)
Exercise has many benefits, but there are problems with relying on it to control weight.


Or as is said :
"30% GYM, 70% KITCHEN : ABS ARE MADE IN THE KITCHEN, NOT IN THE GYM"
(http://www.fitnessquotesimg.com/100241/30-gym-70-diet-abs-are-made-in-the-kitchen-not-in-the-gym)
(Permalink)

Serveur web à la maison : raspberry pi — wiki.debian-fr

mardi 16 juin 2015 à 14:40
Shaarli ladmasmien 16/06/2015
(Permalink)

Anti-DRM proposals torn to shreds in vote on Reda Report | April

mardi 16 juin 2015 à 14:04
Les liens de Jim 16/06/2015
Dommage que l'interopérabilité n'ait pas été sauvegardée, mais certains passages
Et surtout, le rapport est passé, avec entre autres des invitations à étendre les exceptions au droit d'auteur en faveur des bibliothéques et contre le blocage géographique au sein de l'UE.
(Permalink)

When I have to read a module written in CoffeeScript

mardi 16 juin 2015 à 13:52
les liens du Colibri 16/06/2015
Exactement ça
(Permalink)

Le rapport Reda adopté par le comité JURI du Parlement européen - Les univers du livre

mardi 16 juin 2015 à 13:45
Nekoblog.org :: Marque-pages 16/06/2015
Cool. Bonne nouvelle (même si j'ai pas pris le temps de lire tous les amendements de compromis cités dans le papier d'Actualitte).
Une interview de Julia Reda (pas encore pris le temps de la lire non plus) : https://www.actualitte.com/article/interviews/entretien-avec-julia-reda-eurodeputee-allemande-du-parti-pirate/58990
(Permalink)

Technical Specifications | Fairphone

mardi 16 juin 2015 à 13:40
Les petits liens d'Alda 16/06/2015
Le Fairphone 2 vient d'être annoncé à 525€.

Ça fait mal aux fesses, mais au moins il est pas fabriqué dans des conditions dégueulasses.
(Permalink)

Bloc-Notes: Owncloud 8.0.4 et Apache perd la tête | Olivier Delort

mardi 16 juin 2015 à 13:35
Marquetapages Shazen 16/06/2015
(Permalink)

Battery Calibration - Android Apps on Google Play

mardi 16 juin 2015 à 13:33
@jeekajoo shaarlinks 16/06/2015
J'ai déja parlé de cette appli (https://fralef.me/links/?D8R3yQ) mais voici une procédure que je fais faire à distance à mon père. Pour la 2ième fois son galaxy nexus sous omnirom ne veut plus charger (sous secteur) à cause d'un problème de calibration:
* lancer l'appli
* brancher l'ordiphone avec cable usb à un pc
* l'appli détecte le branchement et propose de réaliser une calibration une fois que la batterie atteint 100%, cliquer sur OK.
* patienter
* reboot

Sans cette appli (proprio), on peut utiliser un `adb shell` et faire le taff pareil.
* brancher l'ordiphone avec cable usb à un pc
* attendre le chargement à 100%. Si ça ne charge pas, passer à l'étape suivante.
* rm /data/system/batterystats.bin
* reboot
(Permalink)

Bill2's Links > @jeekajoo shaarlinks 16/06/2015
Je me garde ça sous le coude, ça peut être pratique
(Permalink)