Linux: Cannot allocate more than 32 GB/64 GB of memory in a single process due to virtual memory limit

前端 未结 1 732
走了就别回头了
走了就别回头了 2021-01-04 12:48

I have a computer with 128 GB of RAM, running Linux (3.19.5-200.fc21.x86_64). However, I cannot allocate more than ~30 GB of RAM in a single process. Beyond this, mall

相关标签:
1条回答
  • This is a ulimit and system setup problem, not a c++ problem.

    I can run your appropriately modified code on an Amazon EC2 instance type r3.4xlarge with no problem. These cost less than $0.20/hour on the spot market, and so I suggest you rent one, and perhaps take a look around in /etc and compare to your own setup... or maybe you need to recompile a Linux kernel to use that much memory... but it is not a C++ or gcc problem.

    Ubuntu on the EC2 machine was already set up for unlimited process memory.

    $ sudo su
    # ulimit -u
    --> unlimited
    

    This one has 125GB of ram

    # free
                 total       used       free     shared    buffers     cached
    Mem:     125903992    1371828  124532164        344      22156     502248
    -/+ buffers/cache:     847424  125056568
    Swap:            0          0          0
    

    I modified the limits on your program to go up to 149GB.

    Here's the output. Looks good up to 118GB.

    root@ip-10-203-193-204:/home/ubuntu# ./memtest
    allocation of 1 x 25 GB of data. Ok? yes
    allocation of 1 x 26 GB of data. Ok? yes
    allocation of 1 x 27 GB of data. Ok? yes
    allocation of 1 x 28 GB of data. Ok? yes
    allocation of 1 x 29 GB of data. Ok? yes
    allocation of 1 x 30 GB of data. Ok? yes
    allocation of 1 x 31 GB of data. Ok? yes
    allocation of 1 x 32 GB of data. Ok? yes
    allocation of 1 x 33 GB of data. Ok? yes
    allocation of 1 x 34 GB of data. Ok? yes
    allocation of 1 x 35 GB of data. Ok? yes
    allocation of 1 x 36 GB of data. Ok? yes
    allocation of 1 x 37 GB of data. Ok? yes
    allocation of 1 x 38 GB of data. Ok? yes
    allocation of 1 x 39 GB of data. Ok? yes
    allocation of 1 x 40 GB of data. Ok? yes
    allocation of 1 x 41 GB of data. Ok? yes
    allocation of 1 x 42 GB of data. Ok? yes
    allocation of 1 x 43 GB of data. Ok? yes
    allocation of 1 x 44 GB of data. Ok? yes
    allocation of 1 x 45 GB of data. Ok? yes
    allocation of 1 x 46 GB of data. Ok? yes
    allocation of 1 x 47 GB of data. Ok? yes
    allocation of 1 x 48 GB of data. Ok? yes
    allocation of 1 x 49 GB of data. Ok? yes
    allocation of 1 x 50 GB of data. Ok? yes
    allocation of 1 x 51 GB of data. Ok? yes
    allocation of 1 x 52 GB of data. Ok? yes
    allocation of 1 x 53 GB of data. Ok? yes
    allocation of 1 x 54 GB of data. Ok? yes
    allocation of 1 x 55 GB of data. Ok? yes
    allocation of 1 x 56 GB of data. Ok? yes
    allocation of 1 x 57 GB of data. Ok? yes
    allocation of 1 x 58 GB of data. Ok? yes
    allocation of 1 x 59 GB of data. Ok? yes
    allocation of 1 x 60 GB of data. Ok? yes
    allocation of 1 x 61 GB of data. Ok? yes
    allocation of 1 x 62 GB of data. Ok? yes
    allocation of 1 x 63 GB of data. Ok? yes
    allocation of 1 x 64 GB of data. Ok? yes
    allocation of 1 x 65 GB of data. Ok? yes
    allocation of 1 x 66 GB of data. Ok? yes
    allocation of 1 x 67 GB of data. Ok? yes
    allocation of 1 x 68 GB of data. Ok? yes
    allocation of 1 x 69 GB of data. Ok? yes
    allocation of 1 x 70 GB of data. Ok? yes
    allocation of 1 x 71 GB of data. Ok? yes
    allocation of 1 x 72 GB of data. Ok? yes
    allocation of 1 x 73 GB of data. Ok? yes
    allocation of 1 x 74 GB of data. Ok? yes
    allocation of 1 x 75 GB of data. Ok? yes
    allocation of 1 x 76 GB of data. Ok? yes
    allocation of 1 x 77 GB of data. Ok? yes
    allocation of 1 x 78 GB of data. Ok? yes
    allocation of 1 x 79 GB of data. Ok? yes
    allocation of 1 x 80 GB of data. Ok? yes
    allocation of 1 x 81 GB of data. Ok? yes
    allocation of 1 x 82 GB of data. Ok? yes
    allocation of 1 x 83 GB of data. Ok? yes
    allocation of 1 x 84 GB of data. Ok? yes
    allocation of 1 x 85 GB of data. Ok? yes
    allocation of 1 x 86 GB of data. Ok? yes
    allocation of 1 x 87 GB of data. Ok? yes
    allocation of 1 x 88 GB of data. Ok? yes
    allocation of 1 x 89 GB of data. Ok? yes
    allocation of 1 x 90 GB of data. Ok? yes
    allocation of 1 x 91 GB of data. Ok? yes
    allocation of 1 x 92 GB of data. Ok? yes
    allocation of 1 x 93 GB of data. Ok? yes
    allocation of 1 x 94 GB of data. Ok? yes
    allocation of 1 x 95 GB of data. Ok? yes
    allocation of 1 x 96 GB of data. Ok? yes
    allocation of 1 x 97 GB of data. Ok? yes
    allocation of 1 x 98 GB of data. Ok? yes
    allocation of 1 x 99 GB of data. Ok? yes
    allocation of 1 x 100 GB of data. Ok? yes
    allocation of 1 x 101 GB of data. Ok? yes
    allocation of 1 x 102 GB of data. Ok? yes
    allocation of 1 x 103 GB of data. Ok? yes
    allocation of 1 x 104 GB of data. Ok? yes
    allocation of 1 x 105 GB of data. Ok? yes
    allocation of 1 x 106 GB of data. Ok? yes
    allocation of 1 x 107 GB of data. Ok? yes
    allocation of 1 x 108 GB of data. Ok? yes
    allocation of 1 x 109 GB of data. Ok? yes
    allocation of 1 x 110 GB of data. Ok? yes
    allocation of 1 x 111 GB of data. Ok? yes
    allocation of 1 x 112 GB of data. Ok? yes
    allocation of 1 x 113 GB of data. Ok? yes
    allocation of 1 x 114 GB of data. Ok? yes
    allocation of 1 x 115 GB of data. Ok? yes
    allocation of 1 x 116 GB of data. Ok? yes
    allocation of 1 x 117 GB of data. Ok? yes
    allocation of 1 x 118 GB of data. Ok? yes
    allocation of 1 x 119 GB of data. Ok? nope
    allocation of 1 x 120 GB of data. Ok? nope
    allocation of 1 x 121 GB of data. Ok? nope
    allocation of 1 x 122 GB of data. Ok? nope
    allocation of 1 x 123 GB of data. Ok? nope
    allocation of 1 x 124 GB of data. Ok? nope
    allocation of 1 x 125 GB of data. Ok? nope
    allocation of 1 x 126 GB of data. Ok? nope
    allocation of 1 x 127 GB of data. Ok? nope
    allocation of 1 x 128 GB of data. Ok? nope
    allocation of 1 x 129 GB of data. Ok? nope
    allocation of 1 x 130 GB of data. Ok? nope
    allocation of 1 x 131 GB of data. Ok? nope
    allocation of 1 x 132 GB of data. Ok? nope
    allocation of 1 x 133 GB of data. Ok? nope
    allocation of 1 x 134 GB of data. Ok? nope
    allocation of 1 x 135 GB of data. Ok? nope
    allocation of 1 x 136 GB of data. Ok? nope
    allocation of 1 x 137 GB of data. Ok? nope
    allocation of 1 x 138 GB of data. Ok? nope
    allocation of 1 x 139 GB of data. Ok? nope
    allocation of 1 x 140 GB of data. Ok? nope
    allocation of 1 x 141 GB of data. Ok? nope
    allocation of 1 x 142 GB of data. Ok? nope
    allocation of 1 x 143 GB of data. Ok? nope
    allocation of 1 x 144 GB of data. Ok? nope
    allocation of 1 x 145 GB of data. Ok? nope
    allocation of 1 x 146 GB of data. Ok? nope
    allocation of 1 x 147 GB of data. Ok? nope
    allocation of 1 x 148 GB of data. Ok? nope
    allocation of 1 x 149 GB of data. Ok? nope
    

    Now, about that US$0.17 I spent on this...

    0 讨论(0)
提交回复
热议问题