The UNIX and Linux Forums  
Hello and Welcome from United States to the UNIX and Linux Forums! Thank You for Visiting and Joining Our Global Community.

Go Back   The UNIX and Linux Forums > Top Forums > High Level Programming
.
google unix.com




View Single Post in the UNIX and Linux Forums - Click on the Thread or Permalink to View Entire Thread -->
  #3 (permalink)  
Old 07-08-2009
emitrax emitrax is offline
Registered User
  
 

Join Date: Apr 2009
Posts: 38
Quote:
Originally Posted by otheus View Post
Wow, what a question. Are you re-engineering a database system?
Nope. I'm just trying to write an application as efficient as possible, that needs to dump indexes table, and I'd like to learn as much as possible from this experience.

Quote:
Originally Posted by otheus View Post
On slightly-less than gigabyte boundaries. Actually, 256 kB blocks also work very well.
Do you mean to execute an fwrite of a 256KB buffer? Currently I have a list where every element (table) is an array of N entry, for a total size of 4KB per array, and I dump every table at once with a single fwrite.

Quote:
Originally Posted by otheus View Post
If it's in a different thread, what's the point? You can't just free the memory if the other thread still has a lock on it.

I don't think that's answerable unless one really knows your existing software architecture.
Basically one thread (A) indexes the file, while another thread (B) waits for it to finish, in order to use the produced tables (which I used to keep in memory) to process the data in the file. The problem is that the file indexed are huge (~30GB) and produce more than 4GB of data, which I can't keep in memory (limit of 3GB per process) so, at one point or another I have to dump the data produced in a file in order to free the memory.

The other thread (B), based on a flag, either read the tables from the file or the list in memory.

Thanks for your help,
S.