Questions tagged «memory»

在计算中,内存是指计算系统的状态信息,因为它在某些物理结构中保持活动状态。

2
MySQL每25天左右被操作系统杀死一次
大约4个月前,我们从MS SQL Server迁移到MySQL 5.5。从那时起,自CentOS内存不足并导致MySQL终止运行以来,大约每25天就有一次问题。MySQL安全地重新启动mysql,因此数据库仅完全关闭一两分钟,但是在CentOS杀死mysqld线程之前,我们将遭受数小时的性能和连接损失。 我们通常会看到从凌晨1点到凌晨5点的问题,但从来没有出现在流量最高的一天,这确实使这种情况感到困惑。尽管通常从凌晨1点到凌晨5点看到连接和性能问题,但是mysqldump通常在凌晨4点左右或凌晨5点左右被杀死,而mysqldump运行的同时。 我们认为mysqldump可能是罪魁祸首。但是,它每天凌晨4点开始,但是我们发现某些晚上最早凌晨1点出现问题。mysqldump该--opt开关也正在运行,因此在转储过程中不应缓存大量数据。 我们还考虑了我们正在使用的备份应用程序,该应用程序可以获取转储文件并将其备份到磁带上。我们将其运行时间更改为上午6点,并且问题没有改变。 我们有几个工作会在整个晚上定期运行,但是没有一个工作会占用大量资源,并且根本不需要花费很长时间。 以下是我们正在使用的一些统计信息以及my.cnf文件中的当前条目。对于我们可以尝试的任何帮助或建议,我们将不胜感激。 服务器状态: 英特尔(R)至强(R)CPU E5530 @ 2.40GHz cpu核心:4 内存:12293480(12演出) 操作系统: CentOS的5.5 Linux 2.6.18-274.12.1.el5#1 SMP Tue Nov 29 13:37:46 EST 2011 x86_64 x86_64 x86_64 GNU / Linux MY.CNF: [client] port = 3306 socket = /var/lib/mysql/mysql.sock [mysqld] port = 3306 socket = /var/lib/mysql/mysql.sock skip-name-resolve ssl-ca=<file …
9 mysql  memory  centos 

1
文件表是在文件系统中还是在内存中?
在操作系统控制表的上下文中,术语“文件表”是否指的是属于文件系统或位于主内存中的数据结构(在这种情况下,我假定它仅引用打开的文件) ?我的教科书1说, 这些表提供有关文件的存在,它们在辅助内存中的位置,它们的当前状态以及其他属性的信息。文件管理系统可以维护和使用许多(如果不是全部)信息,在这种情况下,OS很少或根本不了解文件。 另外,什么是文件管理系统?这是否意味着文件系统? 1 Stallings,操作系统,第 7 版,第1页。127


3
内核mmap操作的内存大小
我对Linux mmap将文件放到主内存中的方式(在我的上下文中为执行,但我想mmap进程在写入和读取方面是相同的)及其使用的大小感兴趣。 因此,我知道Linux使用的页面调度通常为4kB页面大小(我在内核中可以找到这个大小吗?)。但这对分配的内存到底意味着什么:假设您的二进制文件大小只有几千个字节,让我们说5812B,然后执行它。内核中会发生什么:它是否分配2 * 4kB,然后将5812B复制到该空间中,从而在第二页中浪费了大于3KB的主内存? 如果有人知道内核资源中定义了pagesize的文件,那就太好了。 我想第二个问题也非常简单:我以5812B为文件大小。大小是从inode取得的,对吗?
9 kernel  memory  inode  mmap 

2
.dtors看起来可写,但尝试编写segfault
这是Ubuntu 9.04、2.6.28-11-server,32位x86 $ cat test.c main() { int *dt = (int *)0x08049f18; *dt = 1; } $ readelf -S ./test ... [18] .dtors PROGBITS 08049f14 000f14 000008 00 WA 0 0 4 ... $ ./test Segmentation fault $ 对于未初始化的对象:gcc .dtors在elf可执行文件中创建一个析构函数段,该段在main()退出后调用。该表长期可写,在我看来,它应该是可写的(请参阅readelf输出)。但是尝试写入表会导致段错误。 我知道最近有一种向只读.dtors前进的趋势,但是我不明白的是,段之间的不匹配readelf。

2
交换似乎没有使用[关闭]
关闭。这个问题是题外话。它当前不接受答案。 想改善这个问题吗? 更新问题,使它成为Unix&Linux Stack Exchange 的主题。 2年前关闭。 (我目前正在使用Ubuntu 14.04 LTS,GNOME环境) tl; dr如何强制进行更多的内存交换(Swapiness已经为100)? 我最近经历了很多系统冻结/崩溃。通常在访问繁忙的网站时。我已经在tty上加载了htop,已经发生了太多事情,所以我可以切换到它并终止我的浏览器(因为GUI没有响应)。但是,有时我需要使用REISUB。 我认为GNOME可能比Unity更好,因为我的Debian系统没有问题,而且确实做到了,但是我的内存仍然很高,并且死机了。 我看了一下free -m今天,发现我的交换显示已使用0。输出: total used free shared buffers cached Mem: 1821 1673 148 221 40 643 -/+ buffers/cache: 989 832 Swap: 1933 0 1933 我暂时交换为100(sudo sysctl vm.swappiness=100)。结果仍然是相同的(即使运行到接近最大系统内存使用量,也将使用0)。 我看着这个答案: 如何查看系统是否正在交换? 不幸的是,在我撰写本文时,我的系统进行了更新,并且我的软件包已锁定,因此我无法安装this(sar),也不确定要包含哪个软件包才能提供另一个输出。 我已经查看了fstab,并且交换分区已正确使用。 # swap was on /dev/sda3 during …
9 memory  swap 

1
如何使内核压缩碎片内存
我在跑步Fedora 26。 这是我的算法教授给我的一个非常奇怪的任务。作业说: C中的内存碎片: 设计,实现和执行一个C程序,该程序执行以下操作:它为3m每个大小为800,000个元素的数组序列分配内存;然后它显式地取消分配所有偶数数组,并分配m每个大小为900,000个元素的数组序列。测量程序分配第一个序列和第二个序列所需的时间。选择m耗尽几乎所有程序可用的主内存。” 这样做的总体目标是对内存进行分段,然后请求的内存量要大于连续块的可用内存量,从而迫使操作系统压缩或整理内存碎片。 在课堂上,我问我们应该怎么做,因为内存是可视的,而不是实际上是连续的,他回答:“好吧,您必须关闭[虚拟内存]。” 其他一些学生在课堂上问我们如何知道何时达到“垃圾收集”状态,他说:“第二次分配的时间应该比第一次分配的时间长,因为垃圾收集需要花费时间” 经过一番搜索后,我发现禁用虚拟内存的最接近方法是使用禁用交换内存swapoff -a。我禁用了桌面环境,并从本机终端编译并运行了程序(以避免受到其他进程的干扰,尤其是诸如桌面环境之类的繁重进程)。我这样做并以递增的方式运行程序,m直到达到第二个分配的时间大于第一个分配的时间。 我以递增的方式运行该程序,m并最终找到了第二个分配的时间比第一个分配的时间长的点。但是,在此过程中,我遇到了一个问题,即在第二次分配之前该进程已被终止。我检查了一下dmesg,发现它被oom-killer 杀死。我发现并阅读了有关oom-killer的几篇文章,发现可以禁用内核对内存的过度分配。 我这样做并再次运行程序,只是这次我找不到m第二个的时间比第一个大的时间。最终,随着m越来越大(尽管比启用了过度分配时要小得多),malloc将失败并且我的程序将终止。 我有三个问题,第一个并不是那么重要: 垃圾回收是否是正确的术语?我的教授非常坚定地说这是垃圾收集,但是我假设垃圾收集是通过编程语言完成的,因此将其视为更碎片整理。 在Linux系统上是否可以像他想的那样进行压缩? 为什么在禁用交换但仍启用了内存过度分配的情况下,第二次分配的时间比第一次分配的时间长?压实实际上发生了吗?如果是这样,为什么在禁用内存过度分配后无法达到压缩的程度?

4
如何判断文件是否是内存映射的?
我对内存映射文件感到困惑,所以我有两个问题,如果您能帮助我,我将非常高兴。 假设我浏览到文件系统中的目录,并且该目录中有一个文件。该文件是否可能指向主内存中的区域,而不是指向磁盘中的区域? 如果可能的话,这就是我们所谓的“内存映射文件”吗? 在文件系统中移动此类文件(即,将mv此类文件从目录移动到另一个目录)的含义是什么?我的理解是,由于文件是内存映射的,因此与文件交互的进程始终写入主内存的预定义区域,并且当我们打开该文件(例如使用vim)时,我们将读取主内存的该区域。内存(因此,不涉及磁盘)。因此,无论我们将文件移到何处,它都将始终正确运行,对吗?如果是,在文件系统中移动文件是否有意义? 是否有一条命令可以判断文件是否已映射内存? 最后,如果我使用打开一个内存映射文件vim,请对其进行一些更改,然后保存并关闭vim,将会发生什么?我所做的更改是否只会写入主存储器?如果是这种情况,使用此文件的其他进程会看到我刚刚所做的更改吗?以我的经验,当我使用进行文件更改时,其他进程没有看到我对该文件所做的更改vim。这是什么原因呢?
8 files  memory 

2
特定用户正在使用多少内存
是否可以找出我在多用户Linux机器上使用的内存量?我想知道我是否正在使用大量内存,并可能给其他人带来不便,因此如有必要,我可以关闭进程。 我在另一个问题中sa -m可能会这样做,但显然我无法在此服务器上访问该命令。 编辑:我没有sudo访问权限,所以我无法安装东西。服务器是CentOS。
8 users  memory 

1
/ proc / pid / maps中的共享库映射
为什么/proc/pid/maps在同一个库中包含一些记录?这是一个例子: 7fae7db9f000-7fae7dc8f000 r-xp 00000000 08:05 536861 /usr/lib/x86_64-linux-gnu/libstdc++.so.6.0.20 7fae7dc8f000-7fae7de8f000 ---p 000f0000 08:05 536861 /usr/lib/x86_64-linux-gnu/libstdc++.so.6.0.20 7fae7de8f000-7fae7de97000 r--p 000f0000 08:05 536861 /usr/lib/x86_64-linux-gnu/libstdc++.so.6.0.20 7fae7de97000-7fae7de99000 rw-p 000f8000 08:05 536861 /usr/lib/x86_64-linux-gnu/libstdc++.so.6.0.20 这是什么意思 ?

1
内存碎片与是否在系统上启用交换功能之间有任何关系吗?
如果我有足够多的RAM,是否需要交换空间?让我想知道,内存碎片量cat /proc/buddyinfo 和是否使用交换之间是否存在任何关系。更具体地说,我想知道利用交换是否可以减少内存碎片。在正常情况下,在我的系统上工作时,我要进行以下操作: tvbox@tvbox-G31M-ES2L:~$ cat /proc/buddyinfo Node 0, zone DMA 3 3 4 14 16 6 2 0 0 1 0 Node 0, zone Normal 1564 1052 462 356 240 109 33 21 6 1 0 Node 0, zone HighMem 43 1972 839 285 183 109 98 34 16 0 …
8 memory  swap 

1
列出缓存中存在的所有文件
该问题回答了有关如何查找缓存部分的问题。但是,在fincore可执行文件中,您必须传递文件名以检查它是否属于缓存。 是否有工具或方法来查找高速缓存内存中的所有条目,而无需传递文件名。 PS:我们正在嵌入式系统中运行它,并且运行for循环并将所有文件传递给fincore自身是一个更加耗时和消耗内存的过程。因此,我正在寻找其他方法。
8 linux  files  memory  cache 

2
掉期-会发生什么?
在我的具有512 MB RAM和348 MB交换空间的Debian VM机器上,如果在编辑器中打开1 GB的文件而内存不足,会发生什么情况? 它会使系统崩溃吗?否则,Linux将如何处理? 安装Swapspace是否明智,因此如果需要,可以自动动态创建足够的交换空间? sudo apt-get install swapspace

3
Linux中最快的`uniq`工具
我的文本文件很大(1.5 G), 我想知道Linux中最快,更可靠的工具是什么。 我通常使用: awk '!x[$0]++' file.txt 但是当我使用htop命令时,我看到我的内存使用量正在增加。 我想知道什么是处理大型文件最快,更可靠的方法。 uniq? sort? sed? awk? 为什么?
8 sed  awk  memory  sort  uniq 

4
内核:禁用/ dev / kmem和/ dev / mem
我了解这一点,/dev/kmem并/dev/mem提供对系统内存(即原始RAM)的访问。我也知道,/dev/kmem可以在内核中完全禁用它,并且可以限制对的访问/dev/mem。 在我看来,对内存的原始访问对开发人员和黑客来说很有用,但是为什么我需要通过访问内存/dev/mem。AFAIK不能在内核中禁用它(不同于/dev/kmem)。在我看来,访问可能被滥用/利用的原始内存似乎只是在自找麻烦。 有实际用途吗?是否有任何用户程序要求它正常工作?

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.