[Sammelthread] Infos zum neuen Kernel

  • Ich bin einmal so frech und erlaube es mir, einen kleinen Sammelthread zu erstellen, in dem die wichtigsten Informationen rund um den neuen Kernel gesammelt werden. Denn die anderen Threads sind bereits mehrere Seiten lang, wodurch die üblichen Fragen andauernd gestellt werden. Vielleicht können wir hier wirklich nur eine Zusammenfassung posten, damit dieser Thread übersichtlich bleibt! Für alle Fragen und Diskussionen gibt es bereits genug andere Threads!


    [infobox]Ich übernehme keine Verantwortung für Vollständigkeit und/oder Richtigkeit. Es handelt sich hier auch um kein offizielles Thema von Netcup, bitte beachtet das ;) [/infobox]


    [title]Original Threads:[/title]


    [title]Was ist alles neu?[/title]

    • Swap: Benutzter bzw. freier Swap wird vom ganzen Node angezeigt, damit man wirklich weiß, was verfügbar ist.
    • Ram: Der "cached" Anteil ist bei Netcup vServern neu und sollte für schnellere Zugriffe sorgen.
    • Bessere CPU/HDD Zugriffe, verbessertes Kernel Scheduling (siehe offizieller Thread)


    • Bisher wusste man nicht, wie viel MB vom gemeinsamen Swap überhaupt genutzt werden können. Das ist jetzt endlich anders, da man den belegten bzw. freien Swap vom ganzen Node sehen kann. Der Swap kann also auch belegt sein, obwohl der eigene Ram noch lange nicht am Limit ist. Man kann davon ausgehen, dass man selbst swappt, wenn der eigene Ram vollständig genutzt ist (cached Werte beachten, siehe weiter unten).


      Eine andauernde Ausnutzung des Swap ist trotz dieser neuen Anzeige allerdings nicht empfehlenswert!
      Der Swap sollte nur für kurzfristigen Speicherbedarf verwendet werden und keine Dauerlösung sein.


    • Bisher gab es keine (oder sie wurde nicht [richtig] angezeigt?) Unterstützung für den Cache beim Ram. Das ist nun endlich anders und sollte für schnellere Zugriffe und weniger Ram Verbrauch sorgen. Wer mit den neuen "cached" Werten nichts anfangen kann, sollte sich bitte einmal folgende Seiten durchlesen:



      Wie bekommt man nun den wirklich verwendeten Speicher korrekt angezeigt?


      • Über htop: In htop ist der Ram sehr gut dargestellt. In der Mem-Zeile steht ganz rechts der reale Wert, z.B. 34/200MB - der grüne Balkenanteil entspricht diesen 34MB, dem wirklich genutzten Wert. Der gelbe Anteil ist nur vom Cache (cached) und wird bei Bedarf sofort verringert. Der gelbe Anteil ist also uninteressant und muss nicht beachtet werden. Hier noch ein Screenshot: http://www.happytec.at/upload_…_htop_20100410-123301.png

      • Mit free (-k, -m oder -g Parameter beachten): Besser geht es fast gar nicht, eine Beispielausgabe von free -m:

        Code
        total       used       free     shared    buffers     cached
        Mem:           200        113         86          0          0         77
        -/+ buffers/cache:         35        164
        Swap:          400          0        400


        Die Zeile-/+ buffers/cache ist hier relevant, da dort bereits der "cached" Wert richtig subtrahiert wurde. Soll heißen: 113MB Ram genutzt, davon sind aber 77MB nur Cache, entspricht also ~35MB wirklich genutztem Ram. Wegen der Anzeige in MB (-m) kommt es hier zu einem kleinen Rundungsfehler ;)


      • Über /proc/meminfo: Ein simples cat /proc/meminfo liefert z.B. folgende Werte:

        Code
        MemTotal:         204800 kB
        MemFree:           88308 kB
        Buffers:               0 kB
        Cached:            79648 kB
        SwapTotal:        409600 kB
        SwapFree:         409600 kB
        Dirty:                64 kB


        Ich habe die Ausgabe hier auf die relevanten Einträge gekürzt. Die Werte sollten selbst erklärend sein. Für den wirklichen genutzten Ram gilt folgendes: MemTotal - MemFree (- Buffers) - Cached = belegter Ram


      Für folgende Programme fand ich noch keine Lösungen, falls jemand eine kennt, bitte melden:


      • Über top: In top habe ich bisher noch keine Möglichkeit gefunden, alles richtig anzuzeigen.



    • Platzhalter für den Scheduling Bereich


    [title]FAQ - Frequently Asked Questions (Häufig gestellte Fragen)[/title]

    • Wie schaffe ich es mit PHP den belegten Ram auszulesen?
      Sofern man die nötigen Rechte hat (exec oder ähnliche Funktion aktiviert) kann man einfach free aufrufen und das Ergebnis parsen. Alternativ kann man /proc/meminfo auslesen, entweder auch über exec() oder - sofern der OBD (open_basedir) es erlaubt direkt über file_get_contents(). Ein kurzes PHP-Beispiel:
      [PHP]<?php


      // meminfo auslesen
      @exec('cat /proc/meminfo', $result);


      // Und verarbeiten
      $memory = array('MemTotal' => 0, 'MemFree' => 0, 'SwapTotal' => 0, 'SwapFree' => 0, 'Cached' => 0);
      foreach($result as $line)
      {
      if(preg_match('#^(.*?):.*?([0-9]+) kB$#', $line, $matches) && isset($memory[$matches[1]]))
      {
      $memory[$matches[1]] = intval($matches[2]);
      }
      }


      // Berechnen
      $memory['MemUsed'] = ($memory['MemTotal'] - $memory['MemFree'] - $memory['Buffers'] - $memory['Cached']);
      $memory['SwapUsed'] = ($memory['SwapTotal'] - $memory['SwapFree']);


      // Und zum Test ausgeben
      var_dump($memory);


      ?>[/PHP]
      Das gibt z.B. folgendes aus:


      MemUsed ist hier der wirklich genutzte Ram :)


    • Wie kann ich mir den verbrauchten Ram eines Prozesses anzeigen lassen? ps liefert hier nur unbrauchbare Werte (siehe Understanding memory usage on Linux). Dazu hat der Benutzer FidiBus etwas interessantes geschrieben:

      Zitat von FidiBus;15901

      wer pyton installiert hat findet hier: http://www.pixelbeat.org/scripts/ps_mem.py
      ein nettes script.



    Der Beitrag wird vllt. noch übersichtlicher und besser formatiert.
    Wird bald fortgesetzt, da fehlt auch noch einiges... ;)

    "Wer nur noch Enten sieht, hat die Kontrolle über seine Server verloren." (Netzentenfund)

  • Ich habe seit dem Kernel-Update nur Probleme.
    Auch aktuell ist der Server nicht erreichbar. Er ist pingbar, aber kaum ein Dienst reagiert. Im vServercontrolpanelerscheint alles gut und null Last wird angezeigt.
    Um 11:47Uhr ging es zuletzt auch nicht.


    Macht so keinen Spass! :(


    Auffällig sind die hohen Plattenzugriffe, die es vorher nicht so sehr gab.
    Vielleicht ist ja das Filesystem des Hosts nun mehr belastet und zieht die Performance herunter?!

  • ich habs noch nicht ganz gepeilt ^^


    Also ich habe 1048 mb Ram, die sind mir ....
    Den Swap seh ich jetzt durch die Neuerung vom ganzen Node ?
    Bei mir sinds aber immernoch 1048 mb Swap also besitzt mein kompletter Node dieses Swap?


    Weißt du vielleicht schon, woran es liegen könnte, dass letztens fast mein kompletter Ram gecached war? (750mb cache + 200mb normal last)
    Ich erinnere mich noch, dass dort 60 mb swap gecached waren obwohl knapp 100 mb Ram frei waren ...


    Ich hoffe dass, das wirklich schneller wird ... und ned ein ramfresser kernel
    Zuviel gecached is au nid gut ^^


    MfG

  • ich finde das auch merkwürdig, dass beim Swap der insg. genutzte auf dem Node angezeigt wird.
    Bisschen verwirrend.
    Ansonsten ist es bei Linux aber normal, dass soviel gecached wird, wie an RAM da ist.

  • Zitat von ferrarajunior;16783

    Zuviel gecached is au nid gut ^^


    Das sehe ich etwas anders. Ein Modul o.ä. wird von der Festplatte einmal eingelesen und im selben Schritt automatisch im Ram gecached. Das kostet keine unnötigen Ressourcen. Genauso wenig, wenn es nachher aus dem Ram entfernt wird. Wenn es allerdings erneut von den HDD gelesen werden muss, kostet das recht wohl Ressourcen. Der Ram ist bei weitem schneller als alle anderen zur Verfügung stehenden Systeme. Zugriffe im Ram bemerkst du durch die hohen Taktraten und Schreib/Lesegeschwindigkeiten nicht einmal ;)


    Und ansonsten, wie Janny82 es feststellte: Das ist bei Linux normal. Das kannst du bei (fast) jeder lokalen Linux Installation am PC auch beobachten. Dort gibt es zusätzlich sogar noch den Buffer.


    Die Sache mit dem Swap ist übrigens wirklich praktisch: Denn was nützen dir 3GB Swap, wenn z.B. 2GB davon belegt sind, dass aber weder du noch deine Programme mitbekommen und dann einfach gekillt werden? Die Sache mit dem Swap sehe ich als sehr nützliches Feature an.



    MfG Christian

    "Wer nur noch Enten sieht, hat die Kontrolle über seine Server verloren." (Netzentenfund)

  • Ich kann ja kaum glauben, dass kein einziger VPS auf meinem Node den Swap benutzt – aber ist natürlich wunderbar, gibt es wenigstens keine Verschwender :) – Gibt es eigentlich irgendwo eine Info, wie viele VPS es auf einem bestimmten Node gibt?

    Mensch was bin ich froh, weder SysCP noch Webmin, Confixx oder Plesk benutzen zu müssen!

  • Hallo,

    Zitat

    Gibt es eigentlich irgendwo eine Info, wie viele VPS es auf einem bestimmten Node gibt?


    Netcup gibt an welche Hardware auf den Nodes verwendet wird, den Rest kannst Du dir ja denken, weil Netcup die Leistungen ja garantiert und somit ein Limit pro Node haben muss.


    Wenn ich mich irre, korrigiert mich bitte. :)


    Grüße :)

  • Zitat von sim4000;17125

    Den swap sollte man tunlichst unbenutzt lassen.
    Die Kiste wird doch lahm wie sonst was, wenn man swap produktiv benutzt...


    Nungut, ich pers. habe nicht vor, ihn produktiv zu nutzen (auch wenn er dank SSD immerhin nicht so langsam wie bei HDD wäre). Das heißt aber nicht, dass das jeder so sieht, weswegen es mich eben wunderte.


    Zitat von michael

    Netcup gibt an welche Hardware auf den Nodes verwendet wird, den Rest kannst Du dir ja denken, weil Netcup die Leistungen ja garantiert und somit ein Limit pro Node haben muss.


    Im Idealfall wäre das so, ja. Wobei man natürlich auch annehmen könnte, dass Netcup einkalkuliert, dass niemals all zu viele auf einmal ihre Kapazitäten voll ausreizen (und wenn doch, könnte man noch immer die jeweiligen auf andere Nodes verschieben)

    Mensch was bin ich froh, weder SysCP noch Webmin, Confixx oder Plesk benutzen zu müssen!

  • Zitat von dominikh;17132

    (und wenn doch, könnte man noch immer die jeweiligen auf andere Nodes verschieben)


    Kann Netcup nicht so einfach, sonst wäre es ja schön! :)


    Ich denke das Netcup was die Ressourcenverteilung angeht schon sehr genau arbeiten muss, was ich zumindest im Sinne von mir und allen Kunden erhoffe.


    Was ich mir vorstellen könnte das Netcup bei Managed Servern auf diese Art kalkulieren kann, was dann auch noch soweit legitim wäre, aber solange der User die Hand im Spiel hat wohl kaum. :)

  • Ich habmal nochne Frage


    kann es sein, dass seit dem neuen Kernel dieses last connected from .... IP und die Zeit halt in der ersten Zeile beim einloggen weg ist?
    oder hab ich schon wieder irgendwas an den configs verstellt?


    MfG


    *EDIT* mein fehler hab die wtmp datei gelöscht in var/logs -> touch /var/log/wtmp chown root:root wtmp =problem gelöst =)

  • Zitat von killerbees19;16566

    Über /proc/meminfo: Ein simples cat /proc/meminfo liefert z.B. folgende Werte:

    Code
    MemTotal:         204800 kB
    MemFree:           88308 kB
    Buffers:               0 kB
    Cached:            79648 kB
    SwapTotal:        409600 kB
    SwapFree:         409600 kB
    Dirty:                64 kB

    Ich habe die Ausgabe hier auf die relevanten Einträge gekürzt. Die Werte sollten selbst erklärend sein. Für den wirklichen genutzten Ram gilt folgendes: MemTotal - MemFree (- Buffers) - Cached = belegter Ram


    Das ist wohl nicht mehr aktuell, oder? Wie sieht den die aktuelle Berechnung aus?

    "Security is like an onion - the more you dig in the more you want to cry"

  • Also zählt man nur der tatsächlich belegten RAM, aber weder den reservierten Speicher noch ausgelagerten Speicher? :confused:

    "Security is like an onion - the more you dig in the more you want to cry"

  • Mir würde jetzt nichts einfallen, was bei der Virtualisierung hier noch dazu kommt, oder hat sich da etwas verändert?



    MfG Christian

    "Wer nur noch Enten sieht, hat die Kontrolle über seine Server verloren." (Netzentenfund)

  • killerbees19, vielleicht verstehe ich ja deine Berechnungsmethode, wenn du es mir direkt an meinem vServer erklärst:




    • Code
      total       used       free     shared    buffers     cached
       Mem:          1024       1024          0          0          0        569
      -/+ buffers/cache:        454        569
      Swap:         1024          0       1024




    • Code
      total       used       free     shared    buffers     cached 
      Mem:          1024       1024          0          0          0        968
      -/+ buffers/cache:         55        968
      Swap:         1024          0       1024



    Zwischen 1 und 2 liegen nur wenige Sekunden, es wurde kein Dienst angehalten, etc. Ich habe nur folgendes ausgeführt

    Code
    find /usr -type f -exec md5sum {} \;

    Ich verbrauche damit also nur 55MB RAM? :confused:


    Ich würde eher sagen, ich verbrauche 716MB RAM (ohne Cache).

    "Security is like an onion - the more you dig in the more you want to cry"

  • Hmmm, in der Tat extrem seltsam! Die Werte stimmen überhaupt nicht überein...


    Nur wie kommt man dann an die richtigen Werte, wenn die Ausgabe von free falsch ist? Ich stehe da gerade etwas auf der Leitung. Denn bisher hat es eigentlich immer gepasst und ich hatte hier (= netcup / Linux-VServer) auch noch nie Probleme mit der Auslastung bzw. irgendwelchen Limits. Aber vielleicht habe ich da in den letzten Wochen ein paar Änderungen verpasst. Meine damaligen Hinweise sind nun einmal schon mehr als ein Jahr alt, seit dem wurde die Cache-Unterstützung im netcup Kernel wieder deaktiviert, nochmals verbessert und neu ausgerollt. Keine Ahnung, was dazwischen alles passiert ist.


    Vielleicht sollten wir dazu einmal einen neuen Diskussionsthread mit Verweis auf dieses Thema eröffnen?
    Dann bleibt der Sammelthread übersichtlich und wir können der Sache detaillierter auf den Grund gehen.



    MfG Christian

    "Wer nur noch Enten sieht, hat die Kontrolle über seine Server verloren." (Netzentenfund)