ich habe hier einen Server mit 4 x CPU E5-2643 und 64 GB RAM, dazu ein RAID-10 mit SAS-Platten. Es läuft ein MySQL mit 20 GB key_buffer und einer 60 GB grossen DB, dazu einige Prozesse, die auf der DB herumhampeln und weitere, die ansich etwas im Hintergrund tun und die CPUs mässig belasten.
Nun sehe ich mit "vmstat 1", dass Stück für Stück die Werte bei "free" kleiner werden und bei "cache" grösser werden, beispielsweise so:
Code: Alles auswählen
...
0 0 8512 373376 259960 30166020 0 0 0 96 15148 21682 2 1 97 0
0 0 8512 373036 259960 30166228 0 0 4 324 18024 26187 2 1 97 0
2 0 8512 373424 259968 30166380 0 0 0 32 13982 19999 2 1 97 0
3 0 8512 372384 259968 30166552 0 0 0 16 14930 21712 2 1 97 0
0 0 8512 370980 259976 30166760 0 0 0 32 19202 26688 4 2 94 0
0 0 8512 370624 259980 30166864 0 0 0 68 18794 27617 3 0 97 0
3 0 8512 369620 259980 30167052 0 0 0 2468 19537 26261 4 1 95 0
5 0 8512 369992 259984 30167240 0 0 0 13524 18405 19507 2 1 97 0
5 0 8512 352936 259984 30167472 0 0 0 2124 18129 25813 10 6 83 0
...
Code: Alles auswählen
...
0 0 8512 617656 235152 30118820 0 0 0 0 17503 23328 3 2 95 0
0 0 8512 617928 235156 30118908 0 0 0 5616 17956 32272 2 0 97 0
6 0 8512 600752 235156 30119008 0 0 0 88 37926 40096 6 2 92 0
9 0 8512 2161564 233520 28462332 0 0 12 0 137068 120761 31 7 61 0
11 0 8512 2137700 233524 28465200 0 0 64 308 139075 192378 31 6 63 0
4 0 8512 2157456 233524 28466344 0 0 8 0 95992 133896 28 11 61 0
0 0 8512 2157472 233528 28467196 0 0 0 4556 88982 121980 14 4 82 0
5 0 8512 2157608 233528 28467972 0 0 4 60 95354 132799 14 4 82 0
...
Jetzt könnte man sagen: okay, 5 Sekunden, ist ja nicht viel, aber es laufen auch zeitkritische Prozesse auf dem System, die beispielsweise per UDP Netzwerkpakete empfangen müssen, die kommen so sehr ins Stocken, dass sie Datagramme verlieren.
Also mal im Internet nach Parametern gesucht und habe dirty_background_ratio, dirty_ratio und Co. gefunden. Aber die Meinungen gehen anscheinend stark auseinander, wie die Parameter sinnvoll zu setzen sind. Aktuell sind es 10 bei dirty_background_ratio und 20 bei dirty_ratio, ferner der Default Wert von 30s beim dirty_expire_centisec.
Jemand eine Idee, wie man das optimieren kann? Wie kann ich dem Kernel sagen, dass er vielleicht nicht ein einem grossen Schwung so eine Transaktion machen soll, sondern vielleicht in kleineren Häppchen, dafür aber desöfteren? Oder weiss Jemand andere Tips?
Gruss, mistersixt.