为了账号安全,请及时绑定邮箱和手机立即绑定

当有足够的可用RAM时使用交换。性能受到影响

当有足够的可用RAM时使用交换。性能受到影响

万千封印 2021-04-12 16:13:49
我编写了一个简单的程序来研究在Linux(64位Red Hat Enterprise Linux Server 6.4版)上使用大量RAM时的性能。(请忽略内存泄漏。)#include <sys/time.h>#include <time.h>#include <stdio.h>#include <string.h>#include <iostream>#include <vector>using namespace std;double getWallTime(){  struct timeval time;  if (gettimeofday(&time, NULL))  {    return 0;  }  return (double)time.tv_sec + (double)time.tv_usec * .000001;}int main(){  int *a;  int n = 1000000000;  do  {    time_t mytime = time(NULL);    char * time_str = ctime(&mytime);    time_str[strlen(time_str)-1] = '\0';    printf("Current Time : %s\n", time_str);    double start = getWallTime();    a = new int[n];    for (int i = 0; i < n; i++)    {      a[i] = 1;    }    double elapsed = getWallTime()-start;    cout << elapsed << endl;    cout << "Allocated." << endl;  }  while (1);  return 0;}输出是Current Time : Tue May  8 11:46:55 20183.73667Allocated.Current Time : Tue May  8 11:46:59 201864.5222Allocated.Current Time : Tue May  8 11:48:03 2018110.419顶部输出如下。我们可以看到尽管有足够的可用RAM,但是交换增加了。结果是运行时间从3秒猛增到64秒。我的问题是为什么Linux会牺牲性能而不是全部使用缓存的RAM?内存碎片?但是,将数据放在交换上也肯定会造成碎片。是否有一种解决方法可以使3秒钟保持一致,直到达到物理RAM大小?
查看完整描述

2 回答

  • 2 回答
  • 0 关注
  • 236 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信