Max mögliche Größe des gemeinsam genutzten Speichers im 64-bit-Linux-Maschine
Habe ich die 64-bit-Linux-Rechner(Intel Xeon L5410 @ 2,33 GHz).
**meminfo:**
MemTotal: 24672736 kB
MemFree: 145372 kB
Buffers: 181896 kB
Cached: 22004648 kB
SwapCached: 195072 kB
Active: 9761028 kB
Inactive: 13964532 kB
HighTotal: 0 kB
HighFree: 0 kB
LowTotal: 24672736 kB
LowFree: 145372 kB
SwapTotal: 17414452 kB
SwapFree: 15618852 kB
Dirty: 2125148 kB
Writeback: 0 kB
AnonPages: 1358396 kB
Mapped: 1069632 kB
Slab: 699464 kB
CommitLimit: 29750820 kB
Committed_AS: 9236252 kB
PageTables: 38620 kB
VmallocTotal: 34359738367 kB
VmallocUsed: 17272 kB
VmallocChunk: 34359718843 kB
HugePages_Total: 0
HugePages_Free: 0
HugePages_Rsvd: 0
Hugepagesize: 2048 kB
**Also the shm details are:**
shmall 2097152
shmmax 3294967296
shmmni 4096
Ich versuche zum erstellen von gemeinsam genutzten Speicher über 2 GB, shmget erfolgreich ist, aber später core-dump tritt auf, mit der Fehlermeldung, dass nicht auf den Speicher zugreifen.
Während gemeinsamer Speicher unter 2 GB funktioniert einwandfrei.
Ich bin in der Lage zu finden, jeden gültigen Grund für das als meine shmmax Wert ist rund 3GB
- wie haben Sie die binäre? Wenn Sie laden Sie die core-Datei in gdb, und verwenden Sie die "bt" - Befehl, um die Ablaufverfolgung zu erstellen, was bedeutet es zu sagen?
- Die core-Datei zeigte mir die Linie, wo coredump aufgetreten. Wie ich Ihnen gesagt oben war der Fehler kein Zugriff auf den Speicher an der Adresse ...
- dieser Fehler bedeutet mir nichts. Wie schwer ist es, fügen Sie den backtrace bekommt man so Lesen kann ich es für mich?
- Könnten Sie bitte geben Sie eine Speicher-Karte von Ihrem Prozess, nachdem Sie Sie anfügen, die shared-memory-segment? Der einfachste Weg dies zu tun ist, um einfach nur eine pause nach
shmat()
und verwendencat /proc/<pid>/maps
oder bessercat /proc/<pid>/smaps
. Man könnte auch erstellen undmmap()
eine Datei in/dev/shm/
oder ein auf der Festplatte, wenn der Arbeitsspeicher.
Du musst angemeldet sein, um einen Kommentar abzugeben.
die maximale
shm
Speicher Größe zur Verfügung, bis/proc/sys/kernel/shmmax
und Sie schreiben, könnte in die pseudo-Datei zu ändern. Es wohl nicht sein, erhoben über einen Teil (z.B. die Hälfte) des physischen RAM. Vielleicht haben einige kernel-Konfiguration ändern kann.Können Sie auch Speicher freigeben mit der mmap syscall mit
MAP_SHARED
Flagge./proc/sys/kernel/shmmax
(und es ist nicht ersichtlich, dass das OP versucht)