Programming :: Reduce Memory Cost Of Threads?
Jul 21, 2011
Fedora15 32bit. I write a test program, it creates new thread continually, the thread does nothing but sleep. I find virtual memory increases up almost 10Mb when a new thread is created. and when there's more than 200 threads, the virtual memory used by the program is 3Gb, and now cann't create new thread. but on windows, it costs little memory. What can I do to config the operation system to take less memory on threads?
View 11 Replies
ADVERTISEMENT
Apr 29, 2010
I want to set a limit on the available RAM in my Linux machine, it currently has 4GB of RAM, and in order to perform some experiments I need the system to recognize and use only 1GB. I don't want to limit the amount of memory to one particular process (like with ulimit), but to the whole system. The OS in Ubuntu 9.10. Somewhere a long time ago (for Fedora) I read about editing grub, so that at boot time the limit is set, it might be something along those lines, but not really sure.
View 9 Replies
View Related
Apr 13, 2010
Just wondering if anyone has been successful at reducing the memory footprint of ubu 9.04. I have googled and read a number of "suggestion" but when applied had little or no effect on memory usage. So, after a complete new install, I am here asking this question. It is not a biggie but I am always looking for ways to reduce memory usage without sacrificing functionality.
I try to help others who would like to try and or convert to linux but often their systems have minimal memory and they don't or can't purchase more memory. So, being able to install ubuntu with a smaller memory footprint would be a good thing.
A basic ubuntu 9.04 seems to use about 300 Mb and for many that is too much. Hence, my quest for a smaller memory requirement. I have tried the ubuntu minimal cd's but they don't really achieve much in the memory area and they take so much longer to install since one uses the internet.
At any rate, if someone knows what services or programs that can be safely removed in order to achieve a better memory usage Oh, I have looked at numerous other distro's but seem to always return to ubuntu.
View 1 Replies
View Related
May 15, 2010
I like a lot of the last Ubuntu editions, but my computer is a little old, and Ubuntu becomes slower each edition to me.
I get a AMD Athlon 2 GHz, with just 512 MB of RAM memory...
I tried to customize my last installation of 9.10, but i just mess up with the OS. Well, I googled for informations about reducing memory usage, as well others speed-ups but all them are a bit older. Does anyone know any resource about this?
Until now I just disabled startups programs, but i really want is remove packages and everything that I don't use.
One thing thats get me up set sometimes is that I run Win XP pro under a cryptographed partition, and even yet its very fast in my PC. I even tried Windows 7, and its was faster than the Ubuntus I installed.
When I'm using the 10.04, there is a lot of memory used by cache, specially Gnome...
View 3 Replies
View Related
Feb 11, 2010
I have a VPS running a web application served using Apache, that on average deals with 20-50 requests per second. It's usually above this point (50 requests per second) that the amount of memory that Apache uses is too high for the VPS and errors start occuring - web pages crash and VPS falls over for a minute or two before going back to normal levels.
I believe that MaxClients is the best way to reduce the amount of RAM that Apache uses and I am planning to reduce MaxClients from 256 (default value) to around 100. Each Apache process uses ~15MB and the server has 1900MB of ram in total - the server does nothing else other than run Apache and a few crons.
Current setting are:
Code:
KeepAlive On
MaxKeepAliveRequests 100
KeepAliveTimeout 3
# prefork MPM
# StartServers: number of server processes to start
[Code].....
I tried reducing MaxClients before which lead to massive slowness, so I need some other options as well.
Does my suggestion of reducing MaxClients to ~100 seems sensible? What are my options if the server experiences slowness again - optimise the application? What's the best way to reduce memory usage - move images to another web server?
View 2 Replies
View Related
Sep 22, 2010
I wrote a program that multiplies 2 matrices using multi-threads and another one using multiple processes and shared memory. Both in C.I need to find the total memory usage of these programs. I know of the top command, but when my matrices are relatively small they don't even show up on top because they complete so fast, how can I find the memory usage for these instances?Also, how can I find the total turnaround time of my programs
View 1 Replies
View Related
Aug 14, 2010
I have an Acer Aspire netbook with 1GB RAM and 1.6 GHz dual-core 32-bit x86 chips. The KPackageKit / yum / rpm chain is running too slow for me. In addition to the time required to download any new packages or updates, it seems to require at least one full minute of processing time to install each package, update, or bug fix, no matter how small. Another full minute is consumed for each package in "cleaning up."Running yum from the command line takes nearly the same amount of time.During this time, I cannot run any other applications without severe thrashing. It seems that a full gigabyte of memory is in use with some 100M swapped out to disk.
Is there any way to reduce the running time and memory requirement of the update process?While not updating or installing software, I do not normally run out of memory (i.e. begin thrashing) until I have about a dozen browser tabs open, or the like.
View 9 Replies
View Related
Sep 28, 2010
i want a process that can operate as both a TCP echo server and a UDP echo server. The process can provide service to many clients at the same time, but involves a single process that does not start up any other threads.
View 3 Replies
View Related
Dec 1, 2010
I have two threads & i want to run it continuously ,with while(1) it is possible . Is there any other way to run the threads continuously
View 12 Replies
View Related
Nov 25, 2010
In all the examples I have found the server accepts the client's conection, proccess the data received and close the socket. In an very schematic way it would be something like:
Code:
client_thread{
select to see if there is data to read from socket fd
if there is something to read{
[code]....
Should I use mutexs or semaphores to block the socket fd before read and write or it is not necesary?
View 4 Replies
View Related
Dec 29, 2010
How to list all the threads spawned by a process?
View 4 Replies
View Related
Mar 26, 2011
I wrote a C program using Pthreads to compute the product of 2 matrices. Each element in the product matrix is computed in a separate thread. Eg: Thread (i,j) computes the element C[i][j] of the matrix C, where C=A*B. A is m*n, B is n*p, C is m*p. m,n,p are given as command-line arguments. A and B are initialized to random values from 1 to 10, while all elements of C are initialized to -1.But some threads do not get their arguments (i,j) correctly. So some elements C[i][j] still remain as -1, even after the program is over. My OS is Ubuntu 10.10 (Maverick Meerkat) 32-bit.I ran the program on another computer and it worked correctly. Is it due to a problem in the Pthreads library in my OS? Please help me. I have attached the source code.
View 3 Replies
View Related
Mar 29, 2011
I have doubt regarding cpu sharing between process and threads.In my program iam creating 4threads=> 1 process+4 threads. How is cpu alloted to these all tasks. Is here process is getting cpu time like thread or having more cpu time than threads.
View 1 Replies
View Related
Dec 14, 2010
In posix multi threading, how to send thread1 local data to thread2...?
View 3 Replies
View Related
Nov 26, 2010
Code:
void* thread(void* arg)
{
[code]....
View 5 Replies
View Related
Mar 15, 2011
I have 2 threads and both of them are deleting memory at the end nedded by both.
My problem is that maybe it can happen that a thread start and finish before the other one starts and so it deletes the memory nedded by the other thread. How can I synchronize them so that this can't happend.
As a design my threads look like this:
Code:
The other thread looks the same, but this isn't unoff to stop thread1 to finish before thread2 starts.
View 4 Replies
View Related
Feb 14, 2010
I have a rack of four 1TB drives all partitioned identically with three primary partitions. On each drive
- the first partition is only 64MB;
- the second is a large 900GB partition and
- the last holds all the remaining space
mdadm has been used to set up
/dev/md0 - RAID1, comprised of /dev/sda1 and /dev/sdb1
/dev/md1 - RAID5, comprised of /dev/sda2, /dev/sdb2, /dev/sdc2, /dev/sdd2
/dev/md2 - RAID5, comprised of /dev/sda3, /dev/sdb3, /dev/sdc3, /dev/sdd3
OK, so it was a silly mistake to make - but I am now need to increase the size of /dev/md0. My thinking is to reduce the size of md1 so that I can grow md0.
On md1 I have two logical volumes. I've successfully reduced the size of the volume so that I can reduce the size of md1. Now I'm at the nervous stage; I can find little written on the topic of shrinking RAID5 arrays - and even if I do this I'm unsure if I can move partitions around to regain the space I so desire.
View 1 Replies
View Related
Feb 17, 2011
Please I want Know the code of the Merge Sort with threads in C
View 7 Replies
View Related
Jun 8, 2011
IS there any command to see number of threads are running in a process .I have check ps -eLf but it wont show display for all the threads
View 1 Replies
View Related
Jun 7, 2011
How to communicate between two threads using message queue?
View 4 Replies
View Related
Jul 25, 2010
I am runig a program on a server at my university that has 4 Dual-Core AMD Opteron(tm) Processor 2210 HE and the O.S. is Linux version 2.6.27.25-78.2.56.fc9.x86_64. My program implements Conways Game of Life and it runs using pthreads and openmp. I timed the parrallel part of the program using the getimeofday() function using 1-8 threads. But the timings don't seem right. I get the biggest time using 1 thread(as expected), then the time gets smaller. But the smallest time i get is when i use 4 threads.
Here is an example when i use an array 1000x1000.
Using 1 thread~9,62 sec, Using 2 Threads~4,73 sec, Using 3 ~ 3.64 sec, Using 4~2.99 sec, Using 5 ~4,19 sec, Using 6~3.84, Using 7~3.34, Using 8~3.12.The above timings are when i use pthreads. When i use openmp the timing are smaller but follow the same pattern.I expected that the time would decrease from 1-8 because of the 4 Dual core cpus? I thought that because there are 4 cpus with 2 cores each, 8 threads could run at the same time. Does it have to do with the operating system that the server runs?
Also i tested the same programs on another server that has 7 Dual-Core AMD Opteron(tm) Processor 8214 and runs Linux version 2.6.18-194.3.1.el5. There the timings i get are what i expected. The timings get smaller starting from 1(the biggest) to 8(smallest excecution time).The program implements the Game of Life correct, both using pthreads and openmp, i just cant figure out why the timings are like the example i posted. So in conclusion, my questions are:
1) The number of threads that can run at the same time on a system depends by the cores of the cpus?it depends only by the cpus although each cpu has more than one cores? It depends by all the previous and the Operating System?
2) Does it have to do with the way i divide the 1000x1000 array to the number of threads? But if i did then the openmp code wouldn't give the same pattern of timings?
3)What is the reason i might get such timmings?
View 4 Replies
View Related
Apr 6, 2011
I've implemented a program URL... which reads digital IF data from a radio receiver through a named pipe, measures power levels, and sends the result to stdout. The program is interactive; there is a thread that reads from stdin to watch for commands, a thread that constantly either reads data from the named pipe or throws data away, and an array of processing threads. The program uses GTK+extra to plot the signals. The IF data stream bandwidth exists at the limits of today's technology (is very very fast).
Problem Statement:The program works fine with a few bugs. I've learned since I've made it that using global state variables to coordinate threads isn't a good way of doing it. I also only had knowledge of mutexes and polled the state variable instead of using other methods.My reimplementation will use the following:
- One "Stdin Command Monitoring" thread
- One "Get data from named pipe" thread
- One post-processor thread
- N Processing threads
All threads are alive during the life of main()There are N buffers. Data will come in from the named pipe, and the "Get data" thread will write the data to an "available" buffer. When the buffer is full it will be marked as "full". There will be N processing threads, one for each buffer. When a processing threads' buffer is full, it will process the buffer and save the result to a final buffer. At the end of a number of averages, the post-processor thread will perform a final process on the final buffer and send the results to stdout.
View 2 Replies
View Related
Oct 30, 2010
A good book to learn about threads in C/C++?
View 3 Replies
View Related
Jun 24, 2011
I'm a bit worried about "too many mutexes" in my little curses-based app and would like to get confirmation/opinions that I'm doing this right. I've got an array: int nums[60] I've got 61 threads. 1-60 are doing math on the value in their array index (ie: thread1 increments nums[1], threadN increments nums[N]), then sleep(1) The 61st thread is my curses thread which does a for-loop over the array and prints out all the values to the screen, then sleep(1)
Right now, I've got 1 mutex which gets locked/unlocked each time one of the 60 threads needs to update its array-index with a new value, and the 61st thread locks the same mutex just before the for-loop beings reading the values and unlocks after ending the loop.
My questions:
A) Does the above seem OK? (I know it's ok, cause everything works right now but would like opinions on it)
B) Do I even need the mutexes since 1-60 only ever update their own index and 61 just reads?
C) If I do need the mutex protection, is there a better, more efficient way?
View 11 Replies
View Related
May 6, 2009
I am working with a C++ program consisting of two threads. The first threads receives packets through an UDP unicast connection and stores them in a buffer. The second thread reads the packets from the buffer and sends them through an UDP multicast connection. Both use blocking sockets and share a common buffer and a linked list L1, which are protected by mutexes. The program seemed to work just fine, receiving a packet and sending it almost immediately, but started giving some trouble recently. The synchronization between both thread started failing, and I decided to use a non-blocking socket in the sending thread. As a consequence, sendto() doesn't work in some cases, causing an errno 11 (Resource unavailable).
[Code] ...
View 4 Replies
View Related
Dec 23, 2009
I need to find how many threads are alive with respect to the current process for my further processing. Is there any means to trace this number ?[URL]I referred the above link. But sys/pstat.h is not in my system. Don't know which library gives this header.
View 14 Replies
View Related
Jan 3, 2011
I want to communicate between two threads, each belonging to a different process. Iam using message queues for this. I use mq_open()call. I created the queues with the same queue name starting with a '/'. But when I open the queue, the queue ID is different in both the process. What should I do so that both the process have the same queue ID?
View 1 Replies
View Related
Nov 9, 2010
I have a linked list that two threads work on simultainiousley.The first thread is adding elements to end the linked list while the second is removing them from the front. Can this be done without a lock on the linked list head when elements are beingadded/removed?
I think this lock is causing a performance hit to my application. If there isnt any safe way without it then thats fine but just thought I would check.The first thread uses this fuction to add elements to the list. Full source here. [URL]
Code:
/* Lets add the new packet to the queue. */
pthread_mutex_lock(&workers[queuenum].queue.lock); // Grab lock on queue.
if (workers[queuenum].queue.qlen == 0){ // Check if any packets are in the queue.
[code]...
View 8 Replies
View Related
Mar 8, 2011
I am using GPROF for my code profiling ,but it seems GPROF doesn't supports multithread .Does any one know any other technique for profiling the application code I have checked oprofile but it profile kernel ,I just required for C code profiling technique that supports multiple threads
View 1 Replies
View Related
Sep 4, 2010
I have to compute prime numbers with threads in C. So I choose the algorithm "Sieve of Eratosthenes" and I tried to create 2 threads, but I don't know how to optimize my computing function with threads I beg for help. This is my function:
[Code]...
but it seems like the both of the threads are calculating the same function twice? Is it possible to be optimized or not?
View 7 Replies
View Related