Linux kernel mmap无法进行大内存映射(Centos 7,内核3.10.0-862.el7.x86_64)

Linux kernel mmap无法进行大内存映射(Centos 7,内核3.10.0-862.el7.x86_64),linux-kernel,centos7,mmap,Linux Kernel,Centos7,Mmap,我试图在一台运行CentOS 7的服务器上运行MySQL服务器。如果innodb_buffer_pool_size设置为120GB以上,则分配失败。在内部,它试图mmap大型缓冲区。这台机器有256 GB内存。所以我写了下面的测试代码,我认为MySQL也在这么做。此代码在大约130 GB时也会失败 #define SIZE 1 * 1024 * 1024 * 1024 int main() { unsigned long i, k = 0; v

我试图在一台运行CentOS 7的服务器上运行MySQL服务器。如果innodb_buffer_pool_size设置为120GB以上,则分配失败。在内部,它试图mmap大型缓冲区。这台机器有256 GB内存。所以我写了下面的测试代码,我认为MySQL也在这么做。此代码在大约130 GB时也会失败

    #define SIZE 1 * 1024 * 1024 * 1024


    int main() {
        unsigned long i, k = 0;
        void **ptr = NULL;
        char *mvptr = NULL;
        ptr = malloc(sizeof(void *) * 220);

        for(i = 0; i < 220;i++){
                ptr[i] = mmap(NULL, SIZE, PROT_READ | PROT_WRITE, MAP_PRIVATE | MAP_ANONYMOUS, -1,0);
                printf("%d  : %lx\n",i, ptr[i]);
                if ((ptr[i] == (void *)-1))
                {
                        printf("error :%d\n",errno);
                        return 0;

                }
                else
                {
                     mvptr = ptr[i];
                     for(k = 0; k < SIZE; k++)
                         mvptr[k] = 'a';

                }

        }
        sleep(20);
        for(i = 0; i < 220;i++){
                munmap(ptr[i], SIZE);
        }
        free(ptr);
}
在运行free-g节目时

跑步前

              total        used        free      shared  buff/cache   available
Mem:            251           2         248           0           0         248
Swap:             3           0           3
跑步时

              total        used        free      shared  buff/cache   available
Mem:            251         130         120           0           0         120
Swap:             3           0           3

我做错什么了吗。由于仍然有大量可用内存,这可能是什么原因呢?

这是因为/proc/sys/vm/overmit\u比率为50。如果修改过分配率,则可以分配更高的资源

              total        used        free      shared  buff/cache   available
Mem:            251         130         120           0           0         120
Swap:             3           0           3