NEWS
Ram läuft voll
-
@d3ltoroxp Da siehst du es doch:
free: 1146
available: 2710, und das ist entscheidend -
@homoran Das ist ja dann blöd, das das so auch nicht angezeigt wird. Was bringt mir die Anzeige dann ?
-
Wird doch in free angezeigt.
echad@chet:~ $ free -ht --mega total used free shared buff/cache available Mem: 7.8G 1.9G 5.2G 0.0K 691M 5.8G Swap: 99M 0B 99M Total: 7.9G 1.9G 5.3G
-
@thomas-braun Naja bei mir zeigt er ja nur 1,4 GB als Free an, eigentlich habe ich ja aber noch 2,7GB Aber auch in Proxmox zeigt er ja nur 1,4GB an.
Trotzdem steigt es und geht nicht zurück. Anders als sonst, wo es immer diese Peaks gab, wieso viel der dann auch wieder auf 3,2 GB zurück ?
-
@d3ltoroxp sagte in Ram läuft voll:
Aber auch in Proxmox zeigt er ja nur 1,4GB an.
Ich kenn Pruxmurks nicht, aber der wird ja wohl nicht free als available und umgekehrt ausweisen.
Free ist free und available ist available.
Und available ist die aussagekräftigere Zahl. -
@d3ltoroxp sagte in Ram läuft voll:
eigentlich habe ich ja aber noch 2,7GB
aber nicht frei, sondern schnell verfügbar.
Das wird dann freigeschufelt, wenn du es wirklich brauchst -
free + buffered = available
Jedenfalls grob über den Daumen gepeilt.
Swap sollte in der Regel used 0 sein. -
@homoran Also verstehen tu ich das dennoch nicht, diesen Quatsch macht Windows doch auch nicht. Aber naja ist halt so und ich kann mich auf die Anzeige nicht verlassen.
Hier zeigt er mir dann nicht den tatsächlichen Verbrauch an. Das sind ja dann die 1,4 free. Wäre schon sinnvoller wenn man den tatsächlichen Speicher sehen würde, dann sähe es nämlich auch entspannter aus, wenn dort steht 3,3GB von 6GB.
-
@d3ltoroxp sagte in Ram läuft voll:
diesen Quatsch macht Windows doch auch nicht.
Die Speicherverwaltung läuft da auch in weiten Teilen anders ab. Quatsch ist der Linux-Ansatz aber eigentlich nicht. RAM ist schnell, warum soll man dann RAM nicht benutzen?
-
@d3ltoroxp sagte in Ram läuft voll:
diesen Quatsch macht Windows doch auch nich
deswegeist es ja auch windoof.
Linux verwaltet den RAM sinnvoller. schiebt ihn dahin, wo er am ehesten gebraucht werden könnte.
Windoof versucht unnötigerweise möglichst viel RAM frei zuhalten. Wofür? nur genutzter RAM ist sinnvoller RAM.Hab gerade mal bei mir gesucht
am 15. 1. gabs einen reboot, RAM war frei.
Dann fing Linux langsam an den RAM den Prozessen zuzuweisen.
um 01:00 war backitup dran. Das braucht einiges an RAM. Linux schiebt alles verfügbare dahin.Anschließend wird nur noch ein unbedingt notwediges Minimum freigehalten, aber stabil
-
@d3ltoroxp gib mal auf deinem host folgendes ein. Vmid steht für deine Vmnummer.
Dann hast du alles aufgelistet, musst allerdings umrechnenqm status vmid --verbose
-
@d3ltoroxp
Windows macht das in ähnlicher Weise auch.
Möglichst viel mit Reserven in Hauptspeicher. Swapfile, etc. -
Rainer, was du denn da für eine schöne Grafik.
Was ist input/output Counts?Kannst du diese mal zur Verfügung stellen?
Danke. -
@bahnuhr sagte in Ram läuft voll:
Was ist input/output Counts?
keine Ahnung!
Hab den Chart für alle Hosts gehabt, kam aber damals in der Proxmox VM nicht an CPU Temp und CPU Frequency. Da hab ich irgendwas genommen was gut klang und gehofft ich bekomme das noch raus.
Der chart ist ein einfacher flot iFrame
-
@homoran sagte in Ram läuft voll:
Da hab ich irgendwas genommen was gut klang und gehofft ich bekomme das noch raus.
Der is gut
Danke für die Info.
-
@crunchip Müsste ich wahrscheinlich was installieren, Kommando nicht gefunden.
-
@d3ltoroxp sagte in Ram läuft voll:
@crunchip Müsste ich wahrscheinlich was installieren, Kommando nicht gefunden.
??
was soll da installiert werden, du rufst die Details deiner VM vom Host aus auf
sieht dann so aus
-
Ich bin mir nicht sicher, den habe ich gestern aktiviert seitdem wieder diese Ram Überläufe, grad schon wieder... Ich habs wieder deaktiviert.
// momentjs is required as dependecies in javascript adapter const moment = require("moment"); var instances = $(`[id=ical.*.data.table]`); instances.on(ical2CalendarWidget); // remove this, if you know to use your own datapoint let datapointId = 'materialdesignwidgets.calendar.ical2calendar' createState(datapointId, "[]", { read: true, write: false, desc: "JSON String for Calendar Widget", type: "string", def: "[]" }); function ical2CalendarWidget() { try { let calList = []; for (var inst = 0; inst <= instances.length - 1; inst++) { let icalObj = getState(instances[inst]).val; if (icalObj) { for (var i = 0; i <= icalObj.length - 1; i++) { let item = icalObj[i]; // extract calendar color let calendarName = item._class.split(' ')[0].replace('ical_', ''); let startTime = moment(item._date); let endTime = moment(item._end); let start = startTime.format("YYYY-MM-DD HH:mm"); let end = endTime.format("YYYY-MM-DD HH:mm"); if (startTime.format('HH:mm') === '00:00' && endTime.format('HH:mm') === '00:00') { // is full-day event if (endTime.diff(startTime, 'hours') === 24) { // full-day event, one day start = startTime.format("YYYY-MM-DD"); end = startTime.format("YYYY-MM-DD"); } else { // full-day event, multiple days start = startTime.format("YYYY-MM-DD"); end = endTime.format("YYYY-MM-DD"); } } // create object for calendar widget calList.push({ name: item.event, color: getMyCalendarColor(calendarName), colorText: getMyCalendarTextColor(calendarName), start: start, end: end }) } function getMyCalendarColor(calendarName) { // assign colors via the calendar names, use calendar name as set in ical if (calendarName === 'Geburtstage') { return '#FF8040'; } else if (calendarName === 'Abfallentsorgung') { return '#FFFF00' } else if (calendarName === 'Events') { return '#13EC5F' } else if (calendarName === 'Feiertage') { return '#14ECF0' } else if (calendarName === 'SchulplanPräsenzunterricht') { return '#E31CD2' } } function getMyCalendarTextColor(calendarName) { // assign colors via the calendar names, use calendar name as set in ical if (calendarName === 'calendar1') { return '#FFFFFF'; } else if (calendarName === 'calendar2') { return '#FFFFFF' } else if (calendarName === 'calendar3') { return '#FFFFFF' } } } // Enter the destination data point that is to be used as object ID in the widget setState(datapointId, JSON.stringify(calList), true); } } catch (e) { console.error(`ical2MaterialDesignCalendarWidget: message: ${e.message}, stack: ${e.stack}`); } } ical2CalendarWidget();
-
@d3ltoroxp
Grundsätzlich sehe ich ersteinmal keine Anhaltspunkt für ein speicherleck
Allerdings sehe ich ineffiziente Programmierung
Kannst du mal bitte ermitteln wieviel Objekte durch den selektor
In zeile 4 betroffen sind?
Immer wenn eine Änderung eines datenpunktes erfolgt wird ja
Dann ical2CalendarWidget aufgerufen.
Als parameter werden dann Details zum Status mit übergeben, was du aber nicht nutzt.
Trotzdem rechnest du die Details für alle datenpunkte durch.Wenn die Anzahl der datenpunkte gering ist dürfte auch das kein Problem sein.
Wenn sie aber höher ist, und die Anzahl der Änderungen häufig, dann erfolgt da sehr viel rechenarbeit für unnötig Zuviel Daten.
Wenn du das optimierst, müsste sich das normalisieren. -
@oliverio Schau ich mal rein, weiß nur nicht genau, wie ich das ermitteln soll ? Das Script dürfte von @Scrounger sein für sein Kalender Widget.