08-26-2001
limits on array sizes
The answer is No and Yes. Theoretically,
there is no limit. However, the kernel may be
configured to allow only a limited amount
of memory per process and/or user. You can find
out what the system resource limits are on your
particular UNIX system using the system
call "getrlimit()" (man section 2). The following
C program can be compiled and run as any ordinary
user...
================== SNIP ========================
/*
* Filename - getlimits.c
*
* Description - display system resource limits and
* test allocating large blocks of memory.
*
*/
#include <sys/time.h>
#include <sys/resource.h>
#include <unistd.h>
#include <stdio.h>
#include <stdlib.h>
main(int argc, char **argv)
{
struct rlimit rlim;
void *p;
getrlimit(RLIMIT_CPU, &rlim);
printf("CPU: cur - %ld max - %ld\n", rlim.rlim_cur, rlim.rlim_max);
getrlimit(RLIMIT_FSIZE, &rlim);
printf("FSIZE: cur - %ld max - %ld\n", rlim.rlim_cur, rlim.rlim_max);
getrlimit(RLIMIT_DATA, &rlim);
printf("DATA: cur - %ld max - %ld\n", rlim.rlim_cur, rlim.rlim_max);
getrlimit(RLIMIT_STACK, &rlim);
printf("STACK: cur - %ld max - %ld\n", rlim.rlim_cur, rlim.rlim_max);
getrlimit(RLIMIT_CORE, &rlim);
printf("CORE: cur - %ld max - %ld\n", rlim.rlim_cur, rlim.rlim_max);
#ifdef LINUX
getrlimit(RLIMIT_RSS, &rlim);
printf("RSS: cur - %ld max - %ld\n", rlim.rlim_cur, rlim.rlim_max);
getrlimit(RLIMIT_NPROC, &rlim);
printf("NPROC: cur - %ld max - %ld\n", rlim.rlim_cur, rlim.rlim_max);
#else
getrlimit(RLIMIT_VMEM, &rlim);
printf("VMEM: cur - %ld max - %ld\n", rlim.rlim_cur, rlim.rlim_max);
getrlimit(RLIMIT_AS, &rlim);
printf("AS: cur - %ld max - %ld\n", rlim.rlim_cur, rlim.rlim_max);
#endif
getrlimit(RLIMIT_NOFILE, &rlim);
printf("NOFILE: cur - %ld max - %ld\n", rlim.rlim_cur, rlim.rlim_max);
#ifdef LINUX
getrlimit(RLIMIT_MEMLOCK, &rlim);
printf("MEMLOCK: cur - %ld max - %ld\n", rlim.rlim_cur, rlim.rlim_max);
#endif
if((p = malloc(100000000)) == NULL)
{
printf("malloc 100M failed\n");
}
else
{
printf("malloc 100M succeeded\n");
}
if(p) free(p);
if((p = malloc(500000000)) == NULL)
{
printf("malloc 500M failed\n");
}
else
{
printf("malloc 500M succeeded\n");
}
if(p) free(p);
return 0;
}
================== SNIP ========================
The output (on Linux) should look somthing like...
$ getlimits
CPU: cur - 2147483647 max - 2147483647
FSIZE: cur - 2147483647 max - 2147483647
DATA: cur - 2147483647 max - 2147483647
STACK: cur - 8388608 max - 2147483647
CORE: cur - 1024000000 max - 2147483647
RSS: cur - 2147483647 max - 2147483647
NPROC: cur - 2048 max - 2048
NOFILE: cur - 1024 max - 1024
MEMLOCK: cur - 2147483647 max - 2147483647
malloc 100M succeeded
malloc 500M succeeded
10 More Discussions You Might Find Interesting
1. UNIX for Advanced & Expert Users
Hi,
Do anyone know what's the max size of array (in awk)
can be store before hit any memory issue.
Regards (3 Replies)
Discussion started by: epall
3 Replies
2. Shell Programming and Scripting
Is there a way to find out the size of an array in sh shell script? Thanks. (1 Reply)
Discussion started by: trivektor
1 Replies
3. Solaris
hi all,
in my server there are some specific application files which are spread through out the server... these are spread in folders..sub-folders..chid folders...
please help me, how can i find the total size of these specific files in the server... (3 Replies)
Discussion started by: abhinov
3 Replies
4. Programming
i have to store a data more than 100000.
i don't know the size of the data whether it may be 100000 or 1000000.
so how can i define variable size;
example
char abc;
but i don't know the size so how can i give array size??
in one sentence
how can i give the array size dynamically so that i... (6 Replies)
Discussion started by: phani_sree
6 Replies
5. Programming
Hi All
I am simulating a problem in the production where i faced a situation.
Please find the following example program which i simulated.
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
int main()
{
char str1; (3 Replies)
Discussion started by: dhanamurthy
3 Replies
6. Shell Programming and Scripting
#!/bin/sh
##########################################################################################################
#This script is being used for AOK application for cleaning up the .out files and zip it under logs directory.
# IBM
# Created
#For pdocap201/pdoca202 .out files for AOK
#1.... (0 Replies)
Discussion started by: mridul10_crj
0 Replies
7. Shell Programming and Scripting
Hello all,
I need to do scripts total up the size in selected extension file for example motion.mov and segmentation.avi is in Label Media. For file info.doc and calc.xls in Label Document.
I need output will be like this:
count 1
Media,,2 GB
count 2
Document,,4 GB
My problem is,... (16 Replies)
Discussion started by: sheikh76
16 Replies
8. UNIX for Advanced & Expert Users
Hello,
in one default UFS filesystem we have 8K block size (bsize) and 1K fragmentsize (fsize). At this scenary I thought all "FileSytem IO" will be 8K (or greater) but never smaller than the fragment size (1K). If a UFS fragment/blocksize is allwasy several ADJACENTS sectors on disk (in a ... (4 Replies)
Discussion started by: rarino2
4 Replies
9. Programming
I want to create a form with data values in a dropdown list. The values in the dropdown list need to be generated on the fly from max, min and increment values contained in a mysql database.
Hopefully this makes sense, I really have no idea where to start :confused:
Thanks (6 Replies)
Discussion started by: barrydocks
6 Replies
10. Shell Programming and Scripting
Hi,
I would like to know how to define the size of the array in c shell scripting. (15 Replies)
Discussion started by: gopishrine
15 Replies