source: trunk/ewdoc/WEB_DOC/cmd/wave_serverV_cmd.html @ 2351

Revision 2351, 34.5 KB checked in by paulf, 13 years ago (diff)

removed URL line

  • Property svn:eol-style set to native
  • Property svn:keywords set to Author Date Id Revision
Line 
1<HTML>
2<HEAD>
3<TITLE>Earthworm Modules: Wave_ServerV commands</TITLE>
4</HEAD>
5
6<BODY TEXT="#000000" BGCOLOR="#FADFAF" LINK="#0000EE" VLINK="#551A8B" ALINK="#FF0000">
7
8<CENTER><H1>Earthworm Modules: <BR>Wave_ServerV Configuration File </H1>
9<I>(last revised 27 June, 2000)</I></CENTER>
10
11Page Index:<BR>
121.  <A HREF="#function">Functional command listing</A><BR>
132.  <A HREF="#alphabet">Alphabetic command listing & description</A><BR>
143.  <A HREF="#sample_config">Sample Configuration File</A><BR>
15<P>
16<!-- ADD HERE: Paragraph "On startup, xxxx reads the..." -->
17On startup, wave_serverV reads the configuration file named on the command
18line. Commands in this file set all the parameters used for configuring
19the Earthworm wave_serverV module. In the control file, lines may begin with a
20valid wave_serverV command (listed below) or with one of 2 special characters:
21
22<BLOCKQUOTE><PRE>
23#  marks the line as a comment (example: # This is a comment).<BR>   
24@  allows control files to be nested; one control file can be
25   accessed from another with the command "@" followed by
26   a string representing the path name of the next control file
27   (example: @model.d).
28</BLOCKQUOTE></PRE>
29Command names must be typed in the control file exactly as shown in this
30document (upper/lower case matters!). Blank lines are also permitted in the
31control file.
32<P>
33<A NAME="function">
34<H2>1.  FUNCTIONAL COMMAND LISTING</H2>
35<P> 
36<!-- ADD HERE: Paragraph "Below are the commands recognized..." -->
37Below are the commands recognized by wave_serverV, grouped by the function
38they influence.  Some of the commands are required, as noted. They may be
39specified in any order in the control file.
40
41<!-- ADD HERE: The pre-formatted functional command listing      -->
42<!-- To make an anchor for each command, surround it with these: -->
43<PRE>   Earthworm system setup:
44                <A HREF="#MyModuleId">MyModuleId</A>                required
45                <A HREF="#RingName">RingName</A>                required
46                <A HREF="#LogFile">LogFile</A>                 required
47                <A HREF="#HeartBeatInt">HeartBeatInt</A>            required
48
49        Wave Server Required Commands:
50                <A HREF="#ServerIpAdr">ServerIpAdr</A>
51                <A HREF="#ServerPort">ServerPort</A>
52                <A HREF="#Tank">Tank</A>
53                <A HREF="#GapThresh">GapThresh</A>
54                <A HREF="#IndexUpdate">IndexUpdate</A>
55                <A HREF="#TankStructUpdate">TankStructUpdate</A>
56                <A HREF="#InputQueueLen">InputQueueLen</A>
57                <A HREF="#TankStructFile">TankStructFile</A>
58                <A HREF="#SocketTimeout">SocketTimeout</A>
59
60        Wave Server Optional Commands:
61                <A HREF="#AbortOnSingleTankFailure">AbortOnSingleTankFailure</A>
62                <A HREF="#ClientTimeout">ClientTimeout</A>       
63                <A HREF="#RedundantTankStructFiles">RedundantTankStructFiles</A>
64                <A HREF="#RedundantIndexFiles">RedundantIndexFiles</A>
65                <A HREF="#TankStructFile2">TankStructFile2</A>
66                <A HREF="#MaxMsgSize">MaxMsgSize</A>
67                <A HREF="#PleaseContinue">PleaseContinue</A>
68                <A HREF="#ReCreateBadTanks">ReCreateBadTanks</A>
69                <A HREF="#SecondsBetweenQueueErrorReports">SecondsBetweenQueueErrorReports</A>
70                <A HREF="#MaxServerThreads">MaxServerThreads</A>
71                <A HREF="#QueueReportInterval">QueueReportInterval</A>
72                <A HREF="#Debug">Debug</A>
73                <A HREF="#SocketDebug">SocketDebug</A>
74</PRE>
75
76<A NAME="alphabet">
77<H2>2.  ALPHABETIC COMMAND LISTING & DESCRIPTION</H2>
78<P>
79In the following section, all configuration file commands are listed
80in alphabetical order.  Listed along with the command (bold-type) are
81its arguments (in red), the name of the subroutine that processes the
82command, and the function within the module that the command influences.
83A detailed description of the command and is also given.  Default values
84and example commands are listed after each command description.
85<PRE><B>
86command <font color=red>arg1</font>                                       function
87</PRE></B>
88<HR>
89
90<!-- ADD HERE: all commands; below is a sample command blank: -->
91
92<A NAME="AbortOnSingleTankFailure">  <!-- command name as anchor inside quotes -->   
93<PRE><B>AbortOnSingleTankFailure <font color=red>M</font>
94</B><!-- command args ... -->           
95</PRE>
96<BLOCKQUOTE> <!-- command description goes here -->
97Set to 0 to have wave_server continue even
98if there is a fatal error on a tank during normal processing.
99If this flag is not set to 0, wave_server will die if any type of
100IO error occurs on any tank.  If set to 1 wave_server will not exit
101unless there is a server wide error.
102<PRE><!-- Default and example go here   -->
103Default:  none
104Example:  AbortOnSingleTankFailure 0
105</PRE>
106</BLOCKQUOTE>
107<HR>
108
109<A NAME="ClientTimeout">  <!-- command name as anchor inside quotes -->   
110<PRE><B>ClientTimeout <font color=red>M</font>
111</B><!-- command args ... -->           
112</PRE>
113<BLOCKQUOTE> <!-- command description goes here -->
114Sets the timeout of <font color=red>M</font> milliseconds for response from
115a client. If there are no idle server threads (set by
116<A HREF="#MaxServerThreads">MaxServerThreads</A>), the server manager will
117disconnect clients and kill server threads that have not heard anything from
118their client in this period. Comment out or set to -1 if you don't want to
119kill threads of silent clients.
120<PRE><!-- Default and example go here   -->
121Default:  -1 (client timeout disabled)
122Example:  ClientTimeout 60000
123</PRE>
124</BLOCKQUOTE>
125<HR>
126
127<A NAME="Debug">  <!-- command name as anchor inside quotes -->   
128<PRE><B>Debug <font color=red>n</font>                             Earthworm Setup
129</B><!-- command args ... -->           
130</PRE>
131<BLOCKQUOTE> <!-- command description goes here -->
132Sets the wave_serverV debug level to <font color=red>n</font>. Level zero gives
133no debugging output; level one turns on debugging. Due to the large number of
134transactions that a wave server typically handles, very large amounts of
135debugging output may be produced.
136<PRE><!-- Default and example go here   -->
137Default:  0 (no debugging)
138Example:  Debug 1
139</PRE>
140</BLOCKQUOTE>
141<HR>
142
143<A NAME="GapThresh">  <!-- command name as anchor inside quotes -->   
144<PRE><B>GapThresh <font color=red>G</font> 
145</B><!-- command args ... -->           
146</PRE>
147<BLOCKQUOTE> <!-- command description goes here -->
148Sets the gap threshold to <font color=red>G</font> sample intervals. Trace data
149packets are timestamped with a start time and a stop time, the times of the
150first and last samples in that packet, respectively. Thus, the expected gap
151between end time of one packet and the start time of the next packet is one
152sample interval. Some data sources, such as older digitizers, produce data
153with slightly larger or smaller intervals between them. The gap threshold is
154intended to provide a means of detecting missing packets, without falsely
155declaring a missing packet because of sloppy timestamps. The preferred value
156for this gap threshold is 1.5. Set larger values only if you have a sloppy
157data source. It is not clear how wave_serverV should handle intervals of much
158more than one sample interval between packets if these are not caused by
159missing packets.
160<PRE><!-- Default and example go here   -->
161Default:  none
162Example:  GapThresh 1.5
163</PRE>
164</BLOCKQUOTE>
165<HR>
166
167<A NAME="HeartBeatInt">  <!-- command name as anchor inside quotes -->   
168<PRE><B>HeartBeatInt <font color=red>nsec</font>                             Earthworm Setup
169</B><!-- command args ... -->           
170</PRE>
171<BLOCKQUOTE> <!-- command description goes here -->
172Defines the number of seconds, <font color=red>nsec</font> between
173TYPE_HEARTBEAT messages issued by wave_serverV.
174<PRE><!-- Default and example go here   -->
175Default:  none
176Example:  HeartBeatInt 30
177</PRE>
178</BLOCKQUOTE>
179<HR>
180
181<A NAME="IndexUpdate">  <!-- command name as anchor inside quotes -->   
182<PRE><B>IndexUpdate <font color=red>U</font>
183</B><!-- command args ... -->           
184</PRE>
185<BLOCKQUOTE> <!-- command description goes here -->
186Defines the interval in seconds <font color=red>U</font> between which
187the index files are written to disk. Decreasing this number will keep the
188index file closer to the conditions in the tank file, but will increase disk
189activity. Each index file update involves opening the file, writing the new
190index, and closing the file. If
191<A HREF="#RedundantIndexFiles">RedundantIndexFiles</A> are being used, then the
192update is alternated between the two index files for each tank.
193<PRE><!-- Default and example go here   -->
194Default:  none
195Example:  IndexUpdate 10
196</PRE>
197</BLOCKQUOTE>
198<HR>
199
200<A NAME="InputQueueLen">  <!-- command name as anchor inside quotes -->   
201<PRE><B>InputQueueLen <font color=red>M</font>
202</B><!-- command args ... -->           
203</PRE>
204<BLOCKQUOTE> <!-- command description goes here -->
205Sets the size of the input queue to <font color=red>M</font> messages.
206Trace_buf messages are buffered in a queue when they are pulled off of an
207earthworm message ring. They are removed from the queue when the main
208thread is ready to process them.  Depending on the CPU and disk speed
209of the machine you are using, this number should be about twice the
210number of tanks you are trying to serve.  Slower machines may need
211larger queues.
212<PRE><!-- Default and example go here   -->
213Default:  none
214Example:  InputQueueLen 200
215</PRE>
216</BLOCKQUOTE>
217<HR>
218
219<A NAME="LogFile">  <!-- command name as anchor inside quotes -->     
220<PRE><B>LogFile <font color=red>switch</font>                                     Earthworm Setup
221</B><!-- command args ... -->           
222</PRE>
223<BLOCKQUOTE> <!-- command description goes here -->
224Sets the on-off switch for writing a log file to disk. If
225<font color=red>switch</font> is 0, no log file will be written. If
226<font color=red>switch</font> is non-zero, wave_serverV will write daily log file(s)
227called nnnnnxx.log_yyyymmdd where nnnnn is the name of the configuration file
228(with the suffix `.d' removed), xx is wave_serverV's module id (set with
229<A HREF="#MyModuleId">MyModuleId</A> command) and yyyymmdd is the current UTC
230date (ex: 19960123) on the system clock. The file(s)
231will be written in the EW_LOG directory (environment variable).
232<PRE><!-- Default and example go here   -->
233Default:  none
234Example:  LogFile   1
235</PRE>
236</BLOCKQUOTE>
237<HR>
238
239<A NAME="MaxMsgSize">  <!-- command name as anchor inside quotes -->   
240<PRE><B>MaxMsgSize <font color=red>S</font>
241</B><!-- command args ... -->           
242</PRE>
243<BLOCKQUOTE> <!-- command description goes here -->
244Optional command to set the maximum trace_buf2 message size to
245 <font color=red>S</font> bytes. Normally, wave_serverV calculates the maximum
246expected message size from the record size values given in
247<A HREF="#Tank">Tank</A> commands. But if larger trace_buf2 messages are found
248on wave_serverV's transport ring, such as SCNL's destined for a different
249wave_serverV, their size must be set here. This is because wave_serverV must
250allocate a buffer for examining each trace_buf2 message it finds on the
251transport ring, and this command is the only way it knows how large to make
252that buffer. If trace_buf2 messages are found with a larger size than given
253here or in the Tank commands, wave_serverV will send an error message to
254statmgr. If in doubt, you can set this command to 4096, the largest trace_buf2
255message allowed in earthworm.
256<PRE><!-- Default and example go here   -->
257Default:  same as largest record size in Tank commands
258Example:  MaxMsgSize 1064
259</PRE>
260</BLOCKQUOTE>
261<HR>
262
263<A NAME="MaxServerThreads">  <!-- command name as anchor inside quotes -->   
264<PRE><B>MaxServerThreads <font color=red>T</font>
265</B><!-- command args ... -->           
266</PRE>
267<BLOCKQUOTE> <!-- command description goes here -->
268Sets the maximum number of server threads to <font color=red>T</font>.
269One server thread is created for each client connected to the wave_serverV. The
270more server threads you allow, the more load will be placed on
271wave_serverV and the computer.
272<PRE><!-- Default and example go here   -->
273Default:  10
274Example:  MaxServerThreads 12
275</PRE>
276</BLOCKQUOTE>
277<HR>
278
279<A NAME="MyModuleId">  <!-- command name as anchor inside quotes -->   
280<PRE><B>MyModuleId <font color=red>mod_id</font>                                  Earthworm setup
281</B><!-- command args ... -->           
282</PRE>
283<BLOCKQUOTE> <!-- command description goes here -->
284Sets the module id for labeling all outgoing heartbeat and error
285messages. <font color=red>mod_id</font> is a character string (valid strings
286are listed in earthworm.d; maximum length is 29 characters) that relates to a
287unique single-byte number. In
288general, a different module ID is needed for each instance of wave_serverV.
289<PRE><!-- Default and example go here   -->
290Default:  none
291Example:  MyModuleId MOD_WSV_1
292</PRE>
293</BLOCKQUOTE>
294<HR>
295
296<A NAME="PleaseContinue">  <!-- command name as anchor inside quotes -->   
297<PRE><B>PleaseContinue <font color=red>X</font>
298</B><!-- command args ... -->           
299</PRE>
300<BLOCKQUOTE> <!-- command description goes here -->
301Sets the PleaseContinue flag to <font color=red>X</font>. If this flag is zero
302and wave_serverV has errors opening and reading its tank or index files,
303wave_serverV will exit. If it is set to any non-zero value, wave_serverV will
304continue after handling those tank file errors.
305<PRE><!-- Default and example go here   -->
306Default:  0 (does not continue after tank file errors)
307Example:  PleaseContinue 1
308</PRE>
309</BLOCKQUOTE>
310<HR>
311
312<A NAME="QueueReportInterval">  <!-- command name as anchor inside quotes -->   
313<PRE><B>QueueReportInterval <font color=red>R</font> 
314</B><!-- command args ... -->           
315</PRE>
316<BLOCKQUOTE> <!-- command description goes here -->
317Defines the number of seconds, <font color=red>R</font> between
318queue reports. The queue report lists the high and low queue levels for the
319previous interval. These reports show up in the log file and on standard
320error output.
321<PRE><!-- Default and example go here   -->
322Default:  30
323Example:  QueueReportInterval 300
324</PRE>
325</BLOCKQUOTE>
326<HR>
327
328<A NAME="ReCreateBadTanks">  <!-- command name as anchor inside quotes -->   
329<PRE><B>ReCreateBadTanks <font color=red>X</font>
330</B><!-- command args ... -->           
331</PRE>
332<BLOCKQUOTE> <!-- command description goes here -->
333Sets the ReCreateBadTanks flag to <font color=red>X</font>. If this flag is
334set, then any tanks that were listed in the tank structure file and had
335errors will be recreated using the parameters in the structure file.
336Any tanks that were listed only in the config file and had errors will not
337be constructed. See <A HREF="../ovr/wave_serverV_ovr.html#wsv_su">Wave Server Startup</A> in the overview file for more details. It is very unlikely
338that setting this flag will help you. Usually it will "recreate bad tanks".
339<PRE><!-- Default and example go here   -->
340Default:  0 (bad tanks are not recreated)
341Example:  ReCreateBadTanks 1
342</PRE>
343</BLOCKQUOTE>
344<HR>
345
346<A NAME="RedundantIndexFiles">  <!-- command name as anchor inside quotes -->   
347<PRE><B>RedundantIndexFiles <font color=red>X</font>
348</B><!-- command args ... -->           
349</PRE>
350<BLOCKQUOTE> <!-- command description goes here -->
351Sets the RedundantIndexFiles flag to <font color=red>X</font>. If this flag is
352set, then two index files will be created for each tank file. If not set,
353then only one index file is created for each tank file. The index file names
354are based on the tank file names with "-1.inx", and if two files, "-2.inx"
355appended. Only a single index file is actually open for all the tanks at any
356given instant. We recommend that you set this flag to 1.
357<PRE><!-- Default and example go here   -->
358Default:  0 (single index files for each tank)
359Example:  RedundantIndexFiles 1
360</PRE>
361</BLOCKQUOTE>
362<HR>
363
364<A NAME="RedundantTankStructFiles">  <!-- command name as anchor inside quotes -->   
365<PRE><B>RedundantTankStructFiles <font color=red>X</font>
366</B><!-- command args ... -->           
367</PRE>
368<BLOCKQUOTE> <!-- command description goes here -->
369Sets the RedundantTankStructFiles flag to <font color=red>X</font>. If this
370flag is set then two tank structure files will be used. If this flag is zero,
371then only one tank structure file will be used. The first tank structure name
372is given with the <A HREF="#TankStructFile">TankStructFile</A> command.
373If two tank structure files are to be used, then you must also specify the
374second structure file name with the
375<A HREF="#TankStructFile2">TankStructFile2</A> command. Because of the
376importance of the tank structure file for restarting wave_serverV, it is
377strongly recommended that you use two tank structure files, by setting the
378RedundantTankStructFiles flag.
379<PRE><!-- Default and example go here   -->
380Default:  0 (single tank structure file)
381Example:  RedundantTankStructFiles 1
382</PRE>
383</BLOCKQUOTE>
384<HR>
385
386<A NAME="RingName">  <!-- command name as anchor inside quotes -->       
387<PRE><B>RingName <font color=red>ring</font>                                      Earthworm setup
388</B><!-- command args ... -->           
389</PRE>
390<BLOCKQUOTE> <!-- command description goes here -->
391Tells wave_serverV which shared memory region to use for input and output.
392<font color=red>ring</font> is a character string (valid strings are listed
393in earthworm.d; maximum length is 19 characters) that relates to a
394unique number for the key to the shared memory region.
395<PRE><!-- Default and example go here   -->
396Default:  none
397Example:  RingName WAVE_RING
398</PRE>
399</BLOCKQUOTE>
400<HR>
401
402<A NAME="SecondsBetweenQueueErrorReports">  <!-- command name as anchor inside quotes -->   
403<PRE><B>SecondsBetweenQueueErrorReports <font color=red>Q</font>                             Earthworm Setup
404</B><!-- command args ... -->           
405</PRE>
406<BLOCKQUOTE> <!-- command description goes here -->
407Defines the number of seconds, <font color=red>Q</font> between
408error reports about the internal message queue. Normally when the message
409queue gets full, an error message would be generated for each new trace_buf2
410message that was supposed to go in the queue. This could be many messages per
411second. To limit the number of error messages to a more reasonable frequency
412this parameter should be set to the desired interval. The error messages
413indicate the number of trace_buf2 messages that failed to enter the full queue
414during the last reporting interval. If you get queue full
415error messages very often, it means that wave_serverV, and probably your
416computer, is not keeping up with its assigned load.
417<PRE><!-- Default and example go here   -->
418Default:  60
419Example:  SecondsBetweenQueueErrorReports 30
420</PRE>
421</BLOCKQUOTE>
422<HR>
423
424<A NAME="ServerIpAdr">  <!-- command name as anchor inside quotes -->   
425<PRE><B>ServerIpAdr <font color=red>addr</font>
426</B><!-- command args ... -->           
427</PRE>
428<BLOCKQUOTE> <!-- command description goes here -->
429Specifies the IP address, <font color=red>addr</font> to which wave_serverV
430will listen for client connections. This must be the IP address of (one of)
431your computer's network interface(s), and it must be an numeric IP address,
432not a host or domain name.
433<PRE><!-- Default and example go here   -->
434Default:  none
435Example:  ServerIpAdr 192.168.7.13
436</PRE>
437</BLOCKQUOTE>
438<HR>
439
440<A NAME="ServerPort">  <!-- command name as anchor inside quotes -->   
441<PRE><B>ServerPort <font color=red>nnn</font>
442</B><!-- command args ... -->           
443</PRE>
444<BLOCKQUOTE> <!-- command description goes here -->
445Specifies the TCP port, <font color=red>nnn</font> on which wave_serverV will
446listen for client connections. It must be a port number not used by any other
447service on the assigned <A HREF="#ServerIpAdr">IP address.</A>
448<PRE><!-- Default and example go here   -->
449Default:  none
450Example:  ServerPort 16021
451</PRE>
452</BLOCKQUOTE>
453<HR>
454
455<A NAME="SocketDebug">  <!-- command name as anchor inside quotes -->   
456<PRE><B>SocketDebug <font color=red>D</font>
457</B><!-- command args ... -->           
458</PRE>
459<BLOCKQUOTE> <!-- command description goes here -->
460Sets the socket debug level, <font color=red>D</font> for earthworm's
461socket library functions. Level 0 turns debugging off, level one is full
462socket debug logging.
463<PRE><!-- Default and example go here   -->
464Default:  0 (no socket debug output)
465Example:  SocketDebug 1
466</PRE>
467</BLOCKQUOTE>
468<HR>
469
470<A NAME="SocketTimeout">  <!-- command name as anchor inside quotes -->   
471<PRE><B>SocketTimeout <font color=red>m</font>
472</B><!-- command args ... -->           
473</PRE>
474<BLOCKQUOTE> <!-- command description goes here -->
475Sets the socket timeout interval to <font color=red>m</font> milliseconds.
476This is for calls sending responses back to the client. Values should be a
477few seconds, certainly less than one minute. If the timeout is exceeded, the
478client is disconnected and the socket is closed.
479<PRE><!-- Default and example go here   -->
480Default:  none
481Example:  SocketTimeout 10000   # timeout of ten seconds
482</PRE>
483</BLOCKQUOTE>
484<HR>
485
486<A NAME="Tank">  <!-- command name as anchor inside quotes -->   
487<PRE><B>Tank <font color=red>station channel net loc recsize inst_id mod_id tanksize indexsize tankfile-name</font>                             Required
488</B><!-- command args ... -->           
489</PRE>
490<BLOCKQUOTE> <!-- command description goes here -->
491Specifies the parameters for one wave_serverV tank. This command is the heart
492of wave_serverV configuration. Use one <B>Tank</B> for each tank to be
493managed by this wave server, up to a maximum of 512 tanks. Computer systems
494limit this to a smaller value: on Unix (Solaris), the limit is about 220,
495based on the stdio limit of 256 open files. On WindowsNT, the limit is about
496200.
497 <P>
498The wave trace data is selected for a Tank by the <font color=red>station</font>,
499<font color=red>channel</font>, <font color=red>net</font>, and
500<font color=red>loc</font> values (the
501SCNL); these names must match exactly the names found in the trace data.
502 <P>
503The amount of space alloted for each wave trace (trace_buf2) packet in the
504tank file is given by <font color=red>recsize</font>. This value, in bytes,
505must be at least as large as the largest trace_buf2 packet expected for this
506SCNL, and must be a multiple of 4. Trace_buf packets consist of a 64-byte
507header, plus the trace data samples in binary format (either 2 or 4 bytes
508per sample.) A handy tool for seeing the size of trace_buf2 packets is the
509earthworm utility sniffwave. If trace_buf2 messages for this SCNL are found to
510be larger than <font color=red>recsize</font>, they will be skipped and and
511error message will be sent to statmgr.
512 <P>
513To further specify which trace_buf2 packets are read by wave_serverV, you can
514set the <font color=red>inst_id</font> and <font color=red>mod_id</font> to
515specific values (found in earthworm_global.d in the params directory.)
516Trace_buf that have been produced at the earthworm installation with
517<font color=red>net_id</font> and the module with <font color=red>mod_id</font>
518will be selected; all others will not. Often it is more convenient to allow
519trace data from any installation; in that case, <font color=red>inst_id</font>
520would be set to <B>INST_WILDCARD.</B> Likewise for the moduleId, using
521<B>MOD_WILDCARD.</B>
522 <P>
523The <font color=red>tanksize</font> parameter sets the size of the tank in
524millions of bytes (ten to the sixth power, not 2 to the 20th power!). To
525figure out how large to make your tank files, multiply these quantities
526together: <font color=red>recsize</font>, number of trace packets per second
527for this SCNL, and required duration of the tank in seconds. Be sure to allow
528sufficient disk space for this and all the other tank files!
529 <P>
530The size of the index file (or files if
531<A HREF="#RedundantIndexFiles">RedundantIndexFiles</A></A> is set to 1) is
532specified as <font color=red>indexsize</font> entries. Each index entry is
533about 20 bytes, not large. Each index entry records the start time, tank
534file location (offset) and endtime of a "chunk" of trace data. A new "chunk"
535of trace data is started whenever there is a gap larger than
536<A HREF="#GapThresh">GapThresh</A> sample intervals between the end time of
537one trace_buf2 packet and the start of the next one in the tank. So if you
538have lots of gaps in trace data for one SCNL (due to telemetry problems, for
539example) be sure to make the index files large enough. If wave_serverV runs
540out of index entry for an tank, it will send an error message to statmgr. Then
541it will overwrite the oldest index entry with new information. The result will
542be that the trace_data referenced by that just erased index entry will no
543longer be accessible from the tank file.
544 <P>
545If you find that you need to increase the size of your index files, you can
546do so by changing <font color=red>indexsize</font> and restarting wave_serverV.
547Do not remove the old index files; they will be extended with new, blank
548entries for later use.
549 <P>
550If you have valuable old data in a tank file that has become inaccessible
551because of index file problems, it is possible to reconstruct the index file,
552using either wave_serverV or the utility <B>inspect_tank</B>. If you need
553assistance with this, ask for help from the earthworm mailing list or
554Earthworm Central. Naturally, your need will likely come in the heat of battle,
555so don't panic and delete files that might be useful.
556 <P>
557The last parameter in the Tank command is the
558<font color=red>tankfile-name</font>; this gives the full pathname for the tank
559file. We recommend that you make the tank name similar to the SCNL to aid in
560file manipulation.
561<PRE><!-- Default and example go here   -->
562Default:  none
563Example:  Tank    SEA BHZ UW --  264   INST_UW    MOD_WILDCARD       10         100         /earthworm/run/tanks/SEA_BHZ.tnk
564</PRE>
565</BLOCKQUOTE>
566<HR>
567
568<A NAME="TankStructFile">  <!-- command name as anchor inside quotes -->   
569<PRE><B>TankStructFile <font color=red>name</font>                             Required
570</B><!-- command args ... -->           
571</PRE>
572<BLOCKQUOTE> <!-- command description goes here -->
573Specifies the <font color=red>name</font> of the first tank structure file.
574This should be a full pathname, not a simple file name. This structure file
575name traditionally ends in "-1.str", but this is not required.
576The tank structure file
577contains configuration parameters for all existing tank files. It also contains
578the location in the tank file where new trace data is to be added. This
579data insertion point (a file offset) is updated in the tank structure file at
580the interval specified by <A HREF="#TankStructUpdate">TankStructUpdate.</A>
581<PRE><!-- Default and example go here   -->
582Default:  none
583Example:  TankStructFile j:\data\usgs\datafiles\p1000-1.str
584</PRE>
585</BLOCKQUOTE>
586<HR>
587
588<A NAME="TankStructFile2">  <!-- command name as anchor inside quotes -->   
589<PRE><B>TankStructFile2 <font color=red>name</font>
590</B><!-- command args ... -->           
591</PRE>
592<BLOCKQUOTE> <!-- command description goes here -->
593Specifies the <font color=red>name</font> of the second tank structure file.
594This command is required if <A HREF="#RedundantTankStructFiles">RedundantTankStructFiles</A>
595is set to 1; otherwise it is ignored. This should be a full pathname, not a
596simple file name. This structure file name traditionally ends in "-2.str",
597but this is not required.
598<PRE><!-- Default and example go here   -->
599Default:  none
600Example:  TankStructFile2 j:\data\usgs\datafiles\p1000-2.str
601</PRE>
602</BLOCKQUOTE>
603<HR>
604
605<A NAME="TankStructUpdate">  <!-- command name as anchor inside quotes -->   
606<PRE><B>TankStructUpdate <font color=red>U</font>                             Required
607</B><!-- command args ... -->           
608</PRE>
609<BLOCKQUOTE> <!-- command description goes here -->
610Defines the number of seconds, <font color=red>U</font> between
611tank structure file updates. The TANK structure is maintained in memory, and
612periodically written to disk.  The TANK structure tracks the status of the
613all the tank files.  Any data written to the tanks since the last time the
614TANK structure was written to disk is effectively lost if wave_serverV crashes.
615The larger the interval, the more tank data is potentially lost in a crash;
616the smaller the update interval the more disk I/O that is required for
617wave_server to operate. We recommend a structure file update interval of
618one second.
619<PRE><!-- Default and example go here   -->
620Default:  none
621Example:  TankStructUpdate 1
622</PRE>
623</BLOCKQUOTE>
624<HR>
625
626<A NAME="sample_config">
627<H2><BR>3. Sample Configuration File </H2>
628<pre>
629#
630#         Wave ServerV Configuration File
631#
632#       Note:  All directories defined in this configuration file must already
633#               exit or WaveServerV will die.
634#
635MyModuleId    MOD_WAVESERVERV # wave_server's module id
636RingName      WAVE_RING        # name of transport ring to get data from
637LogFile       1                # 1=write log file to disk; 0=don't
638                               # 2=write to module log but not stderr/stdout
639HeartBeatInt  15               # seconds between heartbeats to statmgr
640ServerIPAdr   192.168.1.5      # address of machine running wave_server: geops.geophys
641ServerPort    16022            # port for receiving requests & sending waves
642GapThresh     1.5              # threshhold for gap declaration
643                               # (in sampling periods)
644
645#
646
647SocketTimeout 11000  # Timeout length in MILLISECONDS for socket calls
648                     # This is for calls sending responses back to the
649                     # client. Values should be a few seconds, certainly
650                     # less than one minute.
651
652
653ClientTimeout  60000 # Optional.  Not recommended feature but it does work.
654                     # Timeout in MILLISECONDS for response from client.
655                     # Threads that have not heard anything from their client
656                     # in this period will exit.
657                     # Comment out or set to -1 if you don't want to
658                     # kill threads of silent clients.
659
660
661# Each tank file has an associated in-memory index.  On re-start, the
662# index image on disk must be updated to match the tank.  The more out
663# of date the on-disk index is, the longer it takes to rebuild.  Rebuild
664# times can be from milliseconds to minutes per tank, depending how large
665# the tank is and how old the index is.
666# Set IndexUpdate to the length in time in seconds between
667# updates to disk.  The larger the update interval, the longer
668# a crash recovery will take.  The smaller the update interval
669# the more disk I/O that is required for wave_server to operate,
670# and thus the slower it will operate, once it has reached I/O
671# saturation.
672
673IndexUpdate   10                       
674                               
675
676# Similar to an Index, each tank has TANK structure that depicts the tank.
677# The tank structure is maintained in memory, and periodically written to
678# disk.  The TANK structure tracks the status of the tank.  Any data written
679# to the tank since the last time the TANK structure was written to disk
680# is effectively lost.  TankStructUpdate is the interval in seconds that the
681# Tank Structure file on disk is updated.  The higher the interval, the more
682# the tank data is that is potentially lost in a crash, the lower the interval
683# the more the disk I/O that is required for wave_server to operate.
684
685TankStructUpdate 1
686
687# The file where TANK structures are stored
688
689TankStructFile  j:\data\usgs\datafiles\p1000-1.str
690
691# I open many files, one tracedata file for each SCNL channel to serve
692# At 500 bytes/second, 1 channel requires 41.2 megabytes per day.
693# NOTE: Record size must be multiple of 4 bytes or wave_serverV will crash
694# with data misalignment.
695# Also, record size must not be greater than MAX_TRACEBUF_SIZ, currently 4096,
696# (defined in tracebuf.h)
697#
698#           SCNL    Record       Logo                  File Size   Index Size       File Name       New       
699#          names   size  (TYPE_TRACEBUF2 only)         (megabytes) (max breaks)     (full path)      Tank     
700
701Tank    GUID EAG NC -- 528   INST_MENLO    MOD_WILDCARD       1         10000        j:\data\usgs\datafiles\p1001.tnk
702Tank    IRG1 EAT NC --  528   INST_MENLO    MOD_WILDCARD       1         10000         j:\data\usgs\datafiles\p1002.tnk
703Tank    IRG2 EAT NC --  528   INST_MENLO    MOD_WILDCARD       1         10000         j:\data\usgs\datafiles\p1003.tnk
704
705
706# Advanced Options
707# YES = 1, NO = 0, NO = (default)
708
709#RedundantTankStructFiles  Set to 1 to use redundant tank struct files. (Recommended)
710RedundantTankStructFiles 1
711
712#RedundantIndexFiles  Set to 1 to use redundant tank index files. (Recommended)
713RedundantIndexFiles      1
714
715
716# Must be set if RedundantTankStructFiles = 1
717#TankStructFile2  /tmp/p1000-2.str
718TankStructFile2  j:\data\usgs\datafiles\p1000-2.str
719
720
721#InputQueueLen:  The number of messages to buffer.  Messages are buffered
722#in a queue.  They are added to the queue when they are pulled off of an
723#earthworm message ring, they are removed from the queue when the main
724#thread is ready to process them.  Depending on the CPU and disk speed
725#of the machine you are using, this number should be about twice the
726#number of tanks you are trying to serve.  Slower machines may need
727#larger queues.
728InputQueueLen 30
729
730
731###################################
732#           Other Optional Commands
733
734
735#MaxMsgSize: Optional command to tell wave_server about TRACEBUF2 messages
736# that could be larger than any going to tanks for this server. This
737# may happen if you have two wave_servers and TRACEBUF2 sources that
738# produce different size messages, e.g., ref2ew messages are 1064 bytes.
739MaxMsgSize 1064
740
741#Debug  Generates VERYVERYVERY large log files.
742#Debug 1
743
744#SocketDebug Set to 1 to get SOCKET_ew debug statements
745SocketDebug 0
746
747#PleaseContinue  Set to 1 to have wave_server continue, even if
748#  there are errors during initialization
749# PleaseContinue 1
750
751#ReCreateBadTanks Set to 1 to have bad tanks re-created from scratch.
752#ReCreateBadTanks 1
753
754#SecondsBetweenQueueErrorReports   Minimum period of time between error
755#  reports to statmgr due to the internal message queue being lapped,
756#  and thus messages being lost.  Default is 60 seconds
757#SecondsBetweenQueueErrorReports 30
758
759#MaxServerThreads  Maximum of server threads to deploy to handle client
760#  requests.  Default is 10.
761#MaxServerThreads 10
762
763#QueueReportInterval  The minimum number of seconds between
764#  reports on internal queue high and low water marks.  The default is 30.
765#QueueReportInterval 5
766
767#AbortOnSingleTankFailure  Set to 0 to have wave_server continue even
768#if there is a fatal error on a tank during normal processing.
769#if this flag is not set to 0, wave_server will die if any type of
770#IO error occurs on any tank.  If set to 1, wave_server will not exit
771#unless there is a server wide error.
772#AbortOnSingleTankFailure 1
773
774</pre>
775</BLOCKQUOTE>
776<HR>
777
778<CENTER> 
779<A HREF="../modules.html">Module Index</A> |
780<A HREF="../ovr/wave_serverV_ovr.html">Wave_ServerV Overview</A>
781</CENTER>
782
783<!-- USGS-required stuff at the end -->
784<HR>
785<ADDRESS>
786Contact: <B><address> Questions? Issues? <a href="http://lyris.nmt.edu/read/all_forums/subscribe?name=earthw" target="_blank">Subscribe to the Earthworm List (earthw). </a></address></B><BR>
787</ADDRESS>
788</BODY>
789</HTML>
790
Note: See TracBrowser for help on using the repository browser.