Out of memory message


 
Thread Tools Search this Thread
Top Forums UNIX for Beginners Questions & Answers Out of memory message
# 1  
Old 03-03-2020
Out of memory message

I have written a script to generate trigrams. The script runs perfectly on a relatively small file. When a large file is given, around 700 KB, I get the message
Code:
Counting trigrams ... 1614375 lines done.gawk32: trigrams.gk:12: (FILENAME=urmono.txt FNR=1614376) fatal: newnode: nextfree: can't allocate memory (No error)

I have Windows 10 with 32 Gb ram. I believe DOS cannot access all that ram and hence gives the above message.
Just in case my program has an error I am giving below the program
Code:
{ 
# $0 = tolower($0)                                   
   gsub(/[.,:;!?"<>\[\]#(){}]/,"")                     
    for(i=1; i<=NF; i++){ 
       trigram = word1 " " word2" " $i         
       word1 = word2                                  
       word2 = $i                                        
       count[trigram]++                               
      }
       printf "\rCounting trigrams ... %6d lines done.", NR > "CON"
  }
END {for (w in count)
      print count[w], "\t" w

Many thanks for any solution to this problem. Truncating the file or dividing it into small chunks and running the script on them is not very satisfactory, since trigrams are repeated in different outputs and I need to combine all of them using another awk script, which makes things cumbersome.
# 2  
Old 03-03-2020
Is 700 KB a mistake ?
Doesn't sound like a large file to me....

Can you show input and required output (a small portion of of course).

What 'DOS' are you referring to, what awk are you using in windows 10 environment (gnutools, cygwin, WSL ?)

Regards
Peasant.
This User Gave Thanks to Peasant For This Post:
# 3  
Old 03-03-2020
Hi,

I just checked your script on a linux system without any output with a file with 1/3 million words in it (filesize 2700 KB: I used this file: wordlist.xz).

Takes < 0.5 second and uses 100 MB of ram.

Code:
{
   gsub(/[.,:;!?"<>\[\]#(){}]/,"")
    for(i=1; i<=NF; i++){
       trigram = word1 " " word2" " $i
       word1 = word2
       word2 = $i
       count[trigram]++
      }
  }

Code:
/usr/bin/time awk -f t.awk wordlist
0.39user 0.02system 0:00.41elapsed 99%CPU (0avgtext+0avgdata 101800maxresident)k
0inputs+0outputs (0major+25315minor)pagefaults 0swaps

System Info:

Code:
CPU: Quad Core Intel Core i7-2600 (-MT MCP-) speed/max: 3051/3800 MHz Kernel: 4.19.0-8-amd64 x86_64 Up: 4h 08m 
Mem: 9670.3/15995.6 MiB (60.5%) Storage: 931.51 GiB (89.1% used) Procs: 284 Shell: bash 5.0.3 inxi: 3.0.32

In a windows 10 virtual machine with 4 GB of RAM and with GNU awk 3.1.6 - downloaded as compiled binary it takes only little more time.

So it boils down to the question Peasant asked already...

Last edited by stomp; 03-03-2020 at 10:51 AM..
These 3 Users Gave Thanks to stomp For This Post:
# 4  
Old 03-03-2020
Many thanks to all. I was using an older version of AWK. I installed the new version and got the results.
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. UNIX and Linux Applications

Ssmtp -t < /path/to/the/message.txt (How to format message.txt for html email)

ssmtp has been running well under Kubuntu 12.04.1 for plain text messages. I would like to send html messages with ssmtp -t < /path/to/the/message.txt, but I cannot seem to get the message.txt file properly formatted. I have tried various charsets, Content-Transfer-Encoding, rearranging the... (0 Replies)
Discussion started by: Ronald B
0 Replies

2. Solaris

[DOUBT] Memory high in idle process on Solaris 10 (Memory Utilization > 90%)

Hi Experts, Our servers running Solaris 10 with SAP Application. The memory utilization always >90%, but the process on SAP is too less even nothing. Why memory utilization on solaris always looks high? I have statement about memory on solaris, is this true: Memory in solaris is used for... (4 Replies)
Discussion started by: edydsuranta
4 Replies

3. Programming

POSIX Message Queue Memory Allocation

Hi, I wanted to know whether the POSIX message queues are statically allocated memory by the kernel based on the parameters specified in the open or as and when we send messages, memory are allocated? Does the kernel reserve the specified memory for the message queue irrespective of whether... (1 Reply)
Discussion started by: sumtata
1 Replies

4. Solaris

restrcit physical memory with zone.max-locked-memory

Is it possible to restrict physical memory in solaris zone with zone.max-locked-memory just like we can do with rcapd ? I do not want to used rcapd (1 Reply)
Discussion started by: fugitive
1 Replies

5. Programming

How to deal with lots of data in memory in order not to run out of memory

Hi, I'm trying to learn how to manage memory when I have to deal with lots of data. Basically I'm indexing a huge file (5GB, but it can be bigger), by creating tables that holds offset <-> startOfSomeData information. Currently I'm mapping the whole file at once (yep!) but of course the... (1 Reply)
Discussion started by: emitrax
1 Replies

6. Solaris

How to find Total and Free Physical Memory and Logical Memory in SOLARIS 9

Hi, Im working on Solaris 9 on SPARC-32 bit running on an Ultra-80, and I have to find out the following:- 1. Total Physical Memory in the system(total RAM). 2. Available Physical Memory(i.e. RAM Usage) 3. Total (Logical) Memory in the system 4. Available (Logical) Memory. I know... (4 Replies)
Discussion started by: 0ktalmagik
4 Replies

7. Shell Programming and Scripting

memory full warning message

Hi I wrote a script #!/usr/bin/ksh #set -x for fs in `df -k|awk '{print $1}'|sed -n "3,14 p"` do x=`df -kl | grep $fs | awk '{ print $5 }'` y=50% if then message="File System `df -k |grep $fs |awk '{print $6\", \"$5}'`... (1 Reply)
Discussion started by: namishtiwari
1 Replies

8. Programming

How to limit max no of message in a posix message queue

Hii can anyone pls tell how to limit the max no of message in a posix message queue. I have made changes in proc/sys/fs/mqueue/msg_max But still whenever i try to read the value of max. message in the queue using attr.mq_curmsgs (where struct mq_attr attr) its giving the default value as 10.... (0 Replies)
Discussion started by: mohit3884
0 Replies

9. Programming

shared memory and message queues

Hi, According to my understanding.. When message queues are used, when a process post a message in the queue and if another process reads it from the queue then the queue will be empty unlike shared memory where n number of processess can access the shared memory and still the contents remain... (2 Replies)
Discussion started by: rvan
2 Replies

10. AIX

Printer Memory Message

Hello Everyone, I received the following (root) email. Does anyone know what causes this and how I can find the offending printer? Thanks in advance. Jim Message 2: From daemon Wed Nov 30 09:51:07 2005 Date: Wed, 30 Nov 2005 09:51:07 -0800 From: daemon To: root (2 Replies)
Discussion started by: jlslhills
2 Replies
Login or Register to Ask a Question