Auteur Sujet: Fuite mémoire avec le kernel 4.13 sous Ubuntu 16.04 LTS  (Lu 3706 fois)

0 Membres et 1 Invité sur ce sujet

vivien

  • Administrateur
  • *
  • Messages: 47 076
    • Twitter LaFibre.info
Fuite mémoire avec le kernel 4.13 sous Ubuntu 16.04 LTS
« le: 25 février 2018 à 22:51:29 »
Fuite mémoire avec le kernel 4.13 sous Ubuntu 16.04 LTS

J'administre de nombreux serveurs, tous sous Ubuntu 16.04 LTS, avec le Kernel HWE (Hardware Enablement) qui upgrade le kernel Linux tous les 6 mois

J'observe une fuite de mémoire importante, sur tous les serveurs qui ont de nombreux échanges réseaux (on va dire des serveurs qui ont régulièrement du trafic internet à plus de 1 Gb/s).

Je n'observe pas de fuite de mémoire avec le même matériel, quand c'est plus le CPU qui est utilisé. En fait la fuite semble proportionnel aux échanges réseaux, comme si a chaque connexion TCP, on perdait de la mémoire.

Cette duite de mémoire est apparue très précisèment lors du passage du kernel 4.10 au Kernel 4.13, le 10 janvier.
Ce changement de Kernel était aussi pour Ubuntu l’application des correctifs Meltdown” (CVE-2017-5754)
Il est donc possible que ce soit lié au Kernel 4.13 ou aux correctifs Meltdown, ceux ci entraînant des modifications pour la mémoire.
J'ai cherché, sans trouver de bug associé a ce problème.

Je fais donc appel à vous !

Sur le serveurs SpeedTest ookla le plus chargé, cette fuite mémoire entraînait un plantage de la machine (je ne sais pas si c'est le watchdog qui la redémarrait mais c'était un arrêt brutal)
J'ai depuis mis en place un reboot automatique chaque nuit et cela permet de ne plus avoir de plantage.

J'ai ce problème de fuite mémoire même sur des serveurs sans PHP, avec uniquement de l'Apache : voici l'utilisation de la ram du serveur de mise à jour Ubuntu http://fr.archive.ubuntu.com/


On voit bien la courbe verte (apps) augmenter régulièrement :


Le trafic de la machine moyenné sur 30 minutes :


Ce que donne un free -m :


Ce que donne un top :


Ce que donne un htop :


vivien

  • Administrateur
  • *
  • Messages: 47 076
    • Twitter LaFibre.info
Fuite mémoire avec le kernel 4.13 sous Ubuntu 16.04 LTS
« Réponse #1 le: 25 février 2018 à 22:56:34 »
Voici d'autres stats, avec un serveur nPerf. La perte à réussi à prendre 30 Go de ram !

Chaque baisse de l’utilisation mémoire correspond à un reboot :


On voit bien la courbe verte (apps) augmenter régulièrement depuis le 10 janvier, date du passage en kernel 4.13 avec patch Meltdown  :


Le trafic de la machine moyenné sur 30 minutes :


Je n'ai pas mis les stats après le 16 février, car depuis le reboot est quotidien ce qui est très efficace.

Même phénomène observé sur un serveur SpeedTest, mais avec plantage de la machine après 3/4 jours.

Voici l'utilisation réseau de la machine SpeedTest :

vivien

  • Administrateur
  • *
  • Messages: 47 076
    • Twitter LaFibre.info
Fuite mémoire avec le kernel 4.13 sous Ubuntu 16.04 LTS
« Réponse #2 le: 25 février 2018 à 22:59:26 »
Note : Avec un kernel Ubuntu HWE, il y a un upgrade tous les 6 mois vers le nouveau kernel comme le montre ce schéma :



hwti

  • Abonné Orange Fibre
  • *
  • Messages: 2 237
  • Chambly (60)
Fuite mémoire avec le kernel 4.13 sous Ubuntu 16.04 LTS
« Réponse #3 le: 26 février 2018 à 02:14:50 »
https://bugs.launchpad.net/ubuntu/+source/linux/+bug/1748408
Il semble y avoir un bug dans le driver i40e, est-ce que tu as une carte réseau Intel qui l'utilise (famille XL710 à priori, c'est assez récent, les cartes >=10Gbps plus anciennes utilisent ixbge ou ixgb) ?

vivien

  • Administrateur
  • *
  • Messages: 47 076
    • Twitter LaFibre.info
Fuite mémoire avec le kernel 4.13 sous Ubuntu 16.04 LTS
« Réponse #4 le: 26 février 2018 à 07:19:38 »
Un grand merci.

Je comprends mieux pourquoi la fuite est proportionnelle au trafic réseau.

Oui, tous les serveurs concernés ont une carte réseau Intel X710 for 10GbE SFP+ (les seules a gérer le PCI Express 3.0, non ?)

dmesg :

# dmesg | grep i40e
[    1.625565] i40e: Intel(R) Ethernet Connection XL710 Network Driver - version 2.1.14-k
[    1.625565] i40e: Copyright (c) 2013 - 2014 Intel Corporation.
[    1.688509] i40e 0000:02:00.0: fw 5.40.47690 api 1.5 nvm 5.40 0x80002d35 18.0.17
[    1.959126] i40e 0000:02:00.0: MAC address: 3c:fd:fe:1a:1d:e0
[    2.060021] i40e 0000:02:00.0: PCI-Express: Speed 8.0GT/s Width x4
[    2.060091] i40e 0000:02:00.0: PCI-Express bandwidth available for this device may be insufficient for optimal performance.
[    2.060096] i40e 0000:02:00.0: Please move the device to a different PCI-e link with more lanes and/or higher transfer rate.
[    2.085931] i40e 0000:02:00.0: Features: PF-id[0] VFs: 64 VSIs: 66 QP: 8 RSS FD_ATR FD_SB NTUPLE DCB VxLAN Geneve PTP VEPA
[    2.140793] i40e 0000:02:00.1: fw 5.40.47690 api 1.5 nvm 5.40 0x80002d35 18.0.17
[    2.422817] i40e 0000:02:00.1: MAC address: 3c:fd:fe:1a:1d:e2
[    2.442684] i40e 0000:02:00.1: PCI-Express: Speed 8.0GT/s Width x4
[    2.442696] i40e 0000:02:00.1: PCI-Express bandwidth available for this device may be insufficient for optimal performance.
[    2.442715] i40e 0000:02:00.1: Please move the device to a different PCI-e link with more lanes and/or higher transfer rate.
[    2.443043] i40e 0000:02:00.1: Features: PF-id[1] VFs: 64 VSIs: 66 QP: 8 RSS FD_ATR FD_SB NTUPLE DCB VxLAN Geneve PTP VEPA
[    2.480205] i40e 0000:02:00.0 enp2s0f0: renamed from eth1
[    2.512183] i40e 0000:02:00.1 enp2s0f1: renamed from eth0
[    5.800514] i40e 0000:02:00.0 enp2s0f0: NIC Link is Up, 10 Gbps Full Duplex, Flow Control: None

lspci :
02:00.0 Ethernet controller: Intel Corporation Ethernet Controller X710 for 10GbE SFP+ (rev 01)
Subsystem: Intel Corporation Ethernet 10G 2P X710 Adapter
Control: I/O- Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B- DisINTx+
Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx-
Latency: 0
Interrupt: pin A routed to IRQ 17
Region 0: Memory at 92000000 (64-bit, prefetchable) [size=16M]
Region 3: Memory at 93008000 (64-bit, prefetchable) [size=32K]
Expansion ROM at 90100000 [disabled] [size=512K]
Capabilities: [40] Power Management version 3
Flags: PMEClk- DSI+ D1- D2- AuxCurrent=0mA PME(D0+,D1-,D2-,D3hot+,D3cold+)
Status: D0 NoSoftRst+ PME-Enable- DSel=8 DScale=1 PME-
Capabilities: [50] MSI: Enable- Count=1/1 Maskable+ 64bit+
Address: 0000000000000000  Data: 0000
Masking: 00000000  Pending: 00000000
Capabilities: [70] MSI-X: Enable+ Count=129 Masked-
Vector table: BAR=3 offset=00000000
PBA: BAR=3 offset=00001000
Capabilities: [a0] Express (v2) Endpoint, MSI 00
DevCap: MaxPayload 2048 bytes, PhantFunc 0, Latency L0s <512ns, L1 <64us
ExtTag+ AttnBtn- AttnInd- PwrInd- RBE+ FLReset+
DevCtl: Report errors: Correctable- Non-Fatal+ Fatal+ Unsupported+
RlxdOrd+ ExtTag+ PhantFunc- AuxPwr- NoSnoop- FLReset-
MaxPayload 256 bytes, MaxReadReq 512 bytes
DevSta: CorrErr+ UncorrErr- FatalErr- UnsuppReq+ AuxPwr- TransPend-
LnkCap: Port #0, Speed 8GT/s, Width x4, ASPM L1, Exit Latency L0s <2us, L1 <16us
ClockPM- Surprise- LLActRep- BwNot- ASPMOptComp+
LnkCtl: ASPM Disabled; RCB 64 bytes Disabled- CommClk+
ExtSynch- ClockPM- AutWidDis- BWInt- AutBWInt-
LnkSta: Speed 8GT/s, Width x4, TrErr- Train- SlotClk+ DLActive- BWMgmt- ABWMgmt-
DevCap2: Completion Timeout: Range ABCD, TimeoutDis+, LTR-, OBFF Not Supported
DevCtl2: Completion Timeout: 65ms to 210ms, TimeoutDis-, LTR-, OBFF Disabled
LnkCtl2: Target Link Speed: 2.5GT/s, EnterCompliance- SpeedDis-
Transmit Margin: Normal Operating Range, EnterModifiedCompliance- ComplianceSOS-
Compliance De-emphasis: -6dB
LnkSta2: Current De-emphasis Level: -3.5dB, EqualizationComplete+, EqualizationPhase1+
EqualizationPhase2-, EqualizationPhase3-, LinkEqualizationRequest-
Capabilities: [e0] Vital Product Data
Product Name: X710 10GbE Controller
Read-only fields:
[V0] Vendor specific: FFV18.0.17
[PN] Part number: 5N7Y5
[MN] Manufacture ID: 31 30 32 38
[V1] Vendor specific: DSV1028VPDR.VER2.0
[V3] Vendor specific: DTINIC
[V4] Vendor specific: DCM10010391C521010391C512020391C523020391C514030391C525030391C516040391C527040391C518050391C529050391C51A060391C52B060391C51C070391C52D070391C51E080391C52F080391C5
[V5] Vendor specific: NPY2
[V6] Vendor specific: PMTA
[V7] Vendor specific: NMVIntel Corp
[V8] Vendor specific: L1D0
[RV] Reserved: checksum good, 4 byte(s) reserved
Read/write fields:
[Y1] System specific: CCF1
End
Capabilities: [100 v2] Advanced Error Reporting
UESta: DLP- SDES- TLP- FCP- CmpltTO- CmpltAbrt- UnxCmplt- RxOF- MalfTLP- ECRC- UnsupReq- ACSViol-
UEMsk: DLP- SDES- TLP- FCP- CmpltTO- CmpltAbrt+ UnxCmplt+ RxOF- MalfTLP- ECRC- UnsupReq- ACSViol-
UESvrt: DLP+ SDES+ TLP+ FCP+ CmpltTO+ CmpltAbrt- UnxCmplt- RxOF+ MalfTLP+ ECRC+ UnsupReq- ACSViol-
CESta: RxErr- BadTLP- BadDLLP- Rollover- Timeout- NonFatalErr+
CEMsk: RxErr+ BadTLP+ BadDLLP+ Rollover+ Timeout+ NonFatalErr+
AERCap: First Error Pointer: 00, GenCap+ CGenEn+ ChkCap+ ChkEn+
Capabilities: [140 v1] Device Serial Number e0-1d-1a-ff-ff-fe-fd-3c
Capabilities: [150 v1] Alternative Routing-ID Interpretation (ARI)
ARICap: MFVC- ACS-, Next Function: 1
ARICtl: MFVC- ACS-, Function Group: 0
Capabilities: [1a0 v1] Transaction Processing Hints
Device specific mode supported
No steering table available
Capabilities: [1b0 v1] Access Control Services
ACSCap: SrcValid- TransBlk- ReqRedir- CmpltRedir- UpstreamFwd- EgressCtrl- DirectTrans-
ACSCtl: SrcValid- TransBlk- ReqRedir- CmpltRedir- UpstreamFwd- EgressCtrl- DirectTrans-
Capabilities: [1d0 v1] #19
Kernel driver in use: i40e
Kernel modules: i40e

Coté CPU, ce sont tous des Xeon E3-1240 v5 ou Xeon E3-1240 v6.


# lscpu
Architecture:          x86_64
Mode(s) opératoire(s) des processeurs :32-bit, 64-bit
Byte Order:            Little Endian
CPU(s):                8
On-line CPU(s) list:   0-7
Thread(s) par cœur : 2
Cœur(s) par socket : 4
Socket(s):             1
Nœud(s) NUMA :       1
Identifiant constructeur :GenuineIntel
Famille de processeur :6
Modèle :             158
Model name:            Intel(R) Xeon(R) CPU E3-1240 v6 @ 3.70GHz
Révision :           9
Vitesse du processeur en MHz :3700.000
CPU max MHz:           4100,0000
CPU min MHz:           800,0000
BogoMIPS:              7392.00
Virtualisation :      VT-x
Cache L1d :           32K
Cache L1i :           32K
Cache L2 :            256K
Cache L3 :            8192K
NUMA node0 CPU(s):     0-7
Flags:                 fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe syscall nx pdpe1gb rdtscp lm constant_tsc art arch_perfmon pebs bts rep_good nopl xtopology nonstop_tsc cpuid aperfmperf tsc_known_freq pni pclmulqdq dtes64 monitor ds_cpl vmx smx est tm2 ssse3 sdbg fma cx16 xtpr pdcm pcid sse4_1 sse4_2 x2apic movbe popcnt tsc_deadline_timer aes xsave avx f16c rdrand lahf_lm abm 3dnowprefetch cpuid_fault epb invpcid_single pti intel_pt tpr_shadow vnmi flexpriority ept vpid fsgsbase tsc_adjust bmi1 hle avx2 smep bmi2 erms invpcid rtm mpx rdseed adx smap clflushopt xsaveopt xsavec xgetbv1 xsaves dtherm ida arat pln pts hwp hwp_notify hwp_act_window hwp_epp

hwti

  • Abonné Orange Fibre
  • *
  • Messages: 2 237
  • Chambly (60)
Fuite mémoire avec le kernel 4.13 sous Ubuntu 16.04 LTS
« Réponse #5 le: 26 février 2018 à 09:48:52 »
Vu le "Intel Corporation Ethernet 10G 2P X710 Adapter", je suppose que c'est une X710-DA2.
Dans ce cas, le message concernant le manque potentiel de débit sur le PCIe est faux, il n'y a que le modèle 4 ports qui a besoin du PCIe 3.0 x8.

Au passage ils vendent des XL710 avec 2 ports 40Gbps, toujours en PCIe 3.0 x8 (un peu moins de 64Gbps théoriques)...
Certes le x16 n'a pas l'air très répandu sur les serveurs, mais je me demande combien de clients se rendent compte de la limitation à l'utilisation.

vivien

  • Administrateur
  • *
  • Messages: 47 076
    • Twitter LaFibre.info
Fuite mémoire avec le kernel 4.13 sous Ubuntu 16.04 LTS
« Réponse #6 le: 26 février 2018 à 12:08:21 »
Oui, le message ne devrait pas apparaitre pour les cartes avec seulement deux ports 10 Gb/s.

[    2.060021] i40e 0000:02:00.0: PCI-Express: Speed 8.0GT/s Width x4
[    2.060091] i40e 0000:02:00.0: PCI-Express bandwidth available for this device may be insufficient for optimal performance.
[    2.060096] i40e 0000:02:00.0: Please move the device to a different PCI-e link with more lanes and/or higher transfer rate.


Pour les cartes X710 avec deux ports 40 Gb/s, il est clairement mentionné que c'est pour du mode active / backup et que la carte ne fait pas faire du full-rate sur les deux ports 40 Gb/s simultanèment.

D’après mon commercial Dell, le 40 Gb/s est en fin de vie, c'est le 25 Gb/s qui va se généraliser pour les débits > 10 Gb/s sur des serveurs.
Le 25 Gb/s offre la possibilité de mettre 4 ports 25 Gb/s sur un port 100 Gb/s simplement.
Un port 100 Gb/s sera constitué de 4 x 25 Gb/s.

La futur carte X710 avec deux ports 25 Gb/s sera bien en mesure de gérer les deux ports 25 Gb/s en full-rate...


vivien

  • Administrateur
  • *
  • Messages: 47 076
    • Twitter LaFibre.info
Fuite mémoire avec le kernel 4.13 sous Ubuntu 16.04 LTS
« Réponse #7 le: 27 février 2018 à 13:49:19 »
voici l'utilisation de la ram du serveur de mise à jour Ubuntu http://fr.archive.ubuntu.com/

Voici ce que cela donne après un reboot : (il y a aussi des stats publiques sur http://fr.archive.ubuntu.com/stats/stats_server.html )

vivien

  • Administrateur
  • *
  • Messages: 47 076
    • Twitter LaFibre.info
Fuite mémoire avec le kernel 4.13 sous Ubuntu 16.04 LTS
« Réponse #8 le: 04 avril 2018 à 03:40:08 »
C'est corrigé. Le firmware 4.13.0-38.43 poussé il y a une semaine sur Ubuntu 17.10 et hier pour Ubuntu 16.04 avec le Kernel HWE corrige le bug :

  * Servers going OOM after updating kernel from 4.10 to 4.13 (LP: #1748408)
    - i40e: Fix memory leak related filter programming status
    - i40e: Add programming descriptors to cleaned_count

hwti

  • Abonné Orange Fibre
  • *
  • Messages: 2 237
  • Chambly (60)
Fuite mémoire avec le kernel 4.13 sous Ubuntu 16.04 LTS
« Réponse #9 le: 04 avril 2018 à 03:56:26 »
Ils ont pris le temps, pour un bug dont la correction était identifiée il y a 1 mois...

Tu avais gardé un reboot régulier entre temps ?

vivien

  • Administrateur
  • *
  • Messages: 47 076
    • Twitter LaFibre.info
Fuite mémoire avec le kernel 4.13 sous Ubuntu 16.04 LTS
« Réponse #10 le: 04 avril 2018 à 07:53:27 »
Comme il n'y avait pas de failles critiques de sécurité, il a été mis en proposed pendant 3 semaines !

Le noyau distribué hier soir est daté du 14 mars :
4.13.0-38-generic #43-Ubuntu SMP Wed Mar 14 15:20:44 UTC 2018 x86_64 x86_64 x86_64 GNU/Linux

Oui j'ai gardé un reboot régulier (automatique au début, puis avec mon pb de Ubuntu serveur utilise l'IPv6 HS du RA à la place de /etc/network/interfaces c'était manuel tous les 3 jours)

vivien

  • Administrateur
  • *
  • Messages: 47 076
    • Twitter LaFibre.info
Fuite mémoire avec le kernel 4.13 sous Ubuntu 16.04 LTS
« Réponse #11 le: 08 avril 2018 à 09:59:58 »
Petit graphe : on voit que la courbe verte est maintenant stable depuis la mise à jour du 3 avril soir :