Differences between revisions 2 and 3
Revision 2 as of 2009-01-30 07:48:34
Size: 11395
Editor: tucano
Comment:
Revision 3 as of 2013-05-01 04:35:26
Size: 11354
Editor: localhost
Comment: converted to 1.6 markup
Deletions are marked like this. Additions are marked like this.
Line 6: Line 6:
[[TableOfContents]] <<TableOfContents>>
Line 8: Line 8:
For general information including the basic setup to get started see the [wiki:JsocUsersGuide Users Guide]. For general information including the basic setup to get started see the [[JsocUsersGuide|Users Guide]].
Line 11: Line 11:
 * JSOC 4.7 released -- Oct 16, 2008 See [http://jsoc.stanford.edu/release_notes/release-4.7.notes release notes]
 * JSOC 4.6 released -- Sep 03, 2008 See [http://jsoc.stanford.edu/release_notes/release-4.6.notes release notes]
 * JSOC 4.5 released -- Jul 16, 2008 See [http://jsoc.stanford.edu/release_notes/release-4.5.notes release notes]
 * JSOC 4.4 released -- Jun 09, 2008 See [http://jsoc.stanford.edu/release_notes/release-4.4.notes release notes]
 * JSOC 4.3 released -- May 26, 2008 See [http://jsoc.stanford.edu/release_notes/release-4.3.notes release notes]
 * JSOC 4.2 released -- Apr 08, 2008 See [http://jsoc.stanford.edu/release_notes/release-4.2.notes release notes]
 * JSOC 4.1 released -- Mar 03, 2008 See [http://jsoc.stanford.edu/release_notes/release-4.1.notes release notes]
 * JSOC 4.0 released -- Dec 07, 2007 See [http://jsoc.stanford.edu/release_notes/release-4.0.notes release notes]
 * JSOC 3.8 released -- Sep 12, 2007 See [http://jsoc.stanford.edu/release_notes/release-3.8.notes release notes]
 * JSOC 3.3 released -- Nov 03, 2006 See [http://jsoc.stanford.edu/release_notes/release-3.3.notes release notes]
 * JSOC 3.2 released -- Sep 15, 2006 See [http://jsoc.stanford.edu/release_notes/release-3.2.notes release notes]
 * JSOC 3.1 released -- Aug 24, 2006 See [http://jsoc.stanford.edu/release_notes/release-3.1.notes release notes]
 * JSOC 3.0 released -- Aug 14, 2006. See [http://jsoc.stanford.edu/release_notes/release-3.0.notes release notes]
 * JSOC 2.3 released -- Aug 10, 2006. See [http://jsoc.stanford.edu/release_notes/release-2.3.notes release notes]
 * JSOC 2.2 released -- May 30, 2006. See [http://jsoc.stanford.edu/release_notes/release-2.2.notes release notes]
 * JSOC 2.1 released -- May 24, 2006. See [http://jsoc.stanford.edu/release_notes/release-2.1.notes release notes]
 * JSOC 2.0 released -- Feb 03, 2006. See [http://jsoc.stanford.edu/release_notes/release-2.0.notes release notes]
 * JSOC 1.0 released -- Oct 19, 2005. See [http://jsoc.stanford.edu/release_notes/release-1.0.notes release notes]
 * JSOC 4.7 released -- Oct 16, 2008 See [[http://jsoc.stanford.edu/release_notes/release-4.7.notes|release notes]]
 * JSOC 4.6 released -- Sep 03, 2008 See [[http://jsoc.stanford.edu/release_notes/release-4.6.notes|release notes]]
 * JSOC 4.5 released -- Jul 16, 2008 See [[http://jsoc.stanford.edu/release_notes/release-4.5.notes|release notes]]
 * JSOC 4.4 released -- Jun 09, 2008 See [[http://jsoc.stanford.edu/release_notes/release-4.4.notes|release notes]]
 * JSOC 4.3 released -- May 26, 2008 See [[http://jsoc.stanford.edu/release_notes/release-4.3.notes|release notes]]
 * JSOC 4.2 released -- Apr 08, 2008 See [[http://jsoc.stanford.edu/release_notes/release-4.2.notes|release notes]]
 * JSOC 4.1 released -- Mar 03, 2008 See [[http://jsoc.stanford.edu/release_notes/release-4.1.notes|release notes]]
 * JSOC 4.0 released -- Dec 07, 2007 See [[http://jsoc.stanford.edu/release_notes/release-4.0.notes|release notes]]
 * JSOC 3.8 released -- Sep 12, 2007 See [[http://jsoc.stanford.edu/release_notes/release-3.8.notes|release notes]]
 * JSOC 3.3 released -- Nov 03, 2006 See [[http://jsoc.stanford.edu/release_notes/release-3.3.notes|release notes]]
 * JSOC 3.2 released -- Sep 15, 2006 See [[http://jsoc.stanford.edu/release_notes/release-3.2.notes|release notes]]
 * JSOC 3.1 released -- Aug 24, 2006 See [[http://jsoc.stanford.edu/release_notes/release-3.1.notes|release notes]]
 * JSOC 3.0 released -- Aug 14, 2006. See [[http://jsoc.stanford.edu/release_notes/release-3.0.notes|release notes]]
 * JSOC 2.3 released -- Aug 10, 2006. See [[http://jsoc.stanford.edu/release_notes/release-2.3.notes|release notes]]
 * JSOC 2.2 released -- May 30, 2006. See [[http://jsoc.stanford.edu/release_notes/release-2.2.notes|release notes]]
 * JSOC 2.1 released -- May 24, 2006. See [[http://jsoc.stanford.edu/release_notes/release-2.1.notes|release notes]]
 * JSOC 2.0 released -- Feb 03, 2006. See [[http://jsoc.stanford.edu/release_notes/release-2.0.notes|release notes]]
 * JSOC 1.0 released -- Oct 19, 2005. See [[http://jsoc.stanford.edu/release_notes/release-1.0.notes|release notes]]
Line 32: Line 32:
 * [http://jsoc.stanford.edu/doc/DRMSreport_html/index.html DRMS (html)] -- DRMS Overview[http://hmi.stanford.edu/development/JSOC_Documents/DRMS_V10.pdf  (as pdf)] - old doc, contents being verified and included in these pages.
 * [wiki:DrmsNames DRMS Names Summary] -- DRMS Dataset Names and Queries BNF summary
 * [http://hmi.stanford.edu/doc/JSOC/DRMS_dataset_names.pdf DRMS Dataset Names] -- Full description (pdf)
 * [wiki:DrmsSeriesNames DRMS Series Names] -- Data Series Reserved Names
 * [[http://jsoc.stanford.edu/doc/DRMSreport_html/index.html|DRMS (html)]] -- DRMS Overview[[http://hmi.stanford.edu/development/JSOC_Documents/DRMS_V10.pdf|(as pdf)]] - old doc, contents being verified and included in these pages.
 * [[DrmsNames|DRMS Names Summary]] -- DRMS Dataset Names and Queries BNF summary
 * [[http://hmi.stanford.edu/doc/JSOC/DRMS_dataset_names.pdf|DRMS Dataset Names]] -- Full description (pdf)
 * [[DrmsSeriesNames|DRMS Series Names]] -- Data Series Reserved Names
Line 37: Line 37:
   * [wiki:SumsDataModel SUMS Data Storage] -- SUMS Basic Data Storage Concepts
   * [wiki:SumsArchiveTimes SUMS Archive and Retention Table] -- Meaning and implications of the values
 * [wiki:Jsd .jsd] -- JSOC Series Definition Files
   * [[SumsDataModel|SUMS Data Storage]] -- SUMS Basic Data Storage Concepts
   * [[SumsArchiveTimes|SUMS Archive and Retention Table]] -- Meaning and implications of the values
 * [[Jsd|.jsd]] -- JSOC Series Definition Files
Line 41: Line 41:
   * [wiki:DrmsCreateSeriesCmd create_series] -- Create entries and tables for a new series in the DRMS database
   * [wiki:DrmsDescribeSeriesCmd describe_series] -- Prints a verbose description of the
   * [[DrmsCreateSeriesCmd|create_series]] -- Create entries and tables for a new series in the DRMS database
   * [[DrmsDescribeSeriesCmd|describe_series]] -- Prints a verbose description of the
Line 44: Line 44:
   * [wiki:DrmsDeleteSeriesCmd delete_series] -- Removes a series and all its associated entries from DRMS.    * [[DrmsDeleteSeriesCmd|delete_series]] -- Removes a series and all its associated entries from DRMS.
Line 48: Line 48:
JSOC programs that use DRMS to operate on DataSeries are called "modules". Modules are run in "sessions". HMI and AIA major processing tasks are accomplished in "pipelines" consisting of one or more sessions. Pipelines are started by "PUI" (Pipeline User Interface) usually by the JSOC production team. Pipelines may also be initiated by users requesting [wiki:DataSet DataSets] via the web or by team members running locally or remotely. A DataSet is a collection of records selected by a query. In essence a dataset name is simply the query that describes it. JSOC programs that use DRMS to operate on DataSeries are called "modules". Modules are run in "sessions". HMI and AIA major processing tasks are accomplished in "pipelines" consisting of one or more sessions. Pipelines are started by "PUI" (Pipeline User Interface) usually by the JSOC production team. Pipelines may also be initiated by users requesting [[DataSet|DataSets]] via the web or by team members running locally or remotely. A DataSet is a collection of records selected by a query. In essence a dataset name is simply the query that describes it.
Line 50: Line 50:
A DRMS Session is the basic unit of computing that interracts with DRMS and SUMS. At the start of a session the user connects to the DRMS database. During the session the user runs one or more modules which read or create [wiki:DataRecord DataRecords] in DataSeries. Access to the actual data stored in SUMS is accomplished within a module via the DRMS API. At the end of a session, SUMS is notified to save any new records online and/or on tape, or to delete records marked temporary to the session. A DRMS Session is the basic unit of computing that interracts with DRMS and SUMS. At the start of a session the user connects to the DRMS database. During the session the user runs one or more modules which read or create [[DataRecord|DataRecords]] in DataSeries. Access to the actual data stored in SUMS is accomplished within a module via the DRMS API. At the end of a session, SUMS is notified to save any new records online and/or on tape, or to delete records marked temporary to the session.
Line 55: Line 55:
 * '''Utility programs''' like [wiki:DrmsCreateSeriesCmd create_series] and [wiki:DrmsDescribeSeriesCmd describe_series] which are usually used to manage the existence of dataseries, not to use dataseries. These programs talk directly to the database.
 * '''Session Providers''' like [wiki:DrmsRunCmd drms_run] or later the [wiki:JsocPui Pipeline User Interface] start DRMS sessions and execute a script file. They can also be used to execute a single instance of a module.
 * '''[wiki:DrmsServerCmd drms_server]''' which connects connects to the database and serves sessions. Most users will not need to start drms_server explicitly.
 * '''Utility programs''' like [[DrmsCreateSeriesCmd|create_series]] and [[DrmsDescribeSeriesCmd|describe_series]] which are usually used to manage the existence of dataseries, not to use dataseries. These programs talk directly to the database.
 * '''Session Providers''' like [[DrmsRunCmd|drms_run]] or later the [[JsocPui|Pipeline User Interface]] start DRMS sessions and execute a script file. They can also be used to execute a single instance of a module.
 * '''[[DrmsServerCmd|drms_server]]''' which connects connects to the database and serves sessions. Most users will not need to start drms_server explicitly.
Line 67: Line 67:
[wiki:DRMSSetup Setting up Your Own DRMS] page. [[DRMSSetup|Setting up Your Own DRMS]] page.
Line 71: Line 71:
All the JSOC "man" pages are now maintained with [http://www.stack.nl/~dimitri/doxygen/index.html doxygen], a semi-automatic documentation tool. They are available in html form via:
 * [http://jsoc.stanford.edu/doxygen_html/ Drms Developer's Documentation][[BR]]
All the JSOC "man" pages are now maintained with [[http://www.stack.nl/~dimitri/doxygen/index.html|doxygen]], a semi-automatic documentation tool. They are available in html form via:
 * [[http://jsoc.stanford.edu/doxygen_html/|Drms Developer's Documentation]]<<BR>>
Line 76: Line 76:
 * [wiki:DrmsServerCmd drms_server],
 * [wiki:DrmsQueryCmd drms_query],
 * [wiki:DrmsCreateSeriesCmd create_series],
 * [wiki:DrmsDescribeSeriesCmd describe_series],
 * [wiki:DrmsDeleteSeriesCmd delete_series]
 * [[DrmsServerCmd|drms_server]],
 * [[DrmsQueryCmd|drms_query]],
 * [[DrmsCreateSeriesCmd|create_series]],
 * [[DrmsDescribeSeriesCmd|describe_series]],
 * [[DrmsDeleteSeriesCmd|delete_series]]
Line 84: Line 84:
We will once again soon have unix-style man pages at [http://jsoc.stanford.edu/man/index.html man1], but not yet: We will once again soon have unix-style man pages at [[http://jsoc.stanford.edu/man/index.html|man1]], but not yet:
Line 109: Line 109:
 * [wiki:FileStruct Software File Tree] -- Organization of files and cvs tree.
 * [http://jsoc.stanford.edu/cvs/
GUI for JSOC CVS] -- GUI access to DRMS and SUMS software
 * [http://jsoc.stanford.edu/cvs/*checkout*/jsoc/src/base/libdrms/drms_types.h?rev=HEAD&content-type=text/plain drms_types.h] -- DRMS types and structure defintions.
 * [[FileStruct|Software File Tree]] -- Organization of files and cvs tree.
 * [[http
://jsoc.stanford.edu/cvs/|GUI for JSOC CVS]] -- GUI access to DRMS and SUMS software
 * [[http://jsoc.stanford.edu/cvs/*checkout*/jsoc/src/base/libdrms/drms_types.h?rev=HEAD&content-type=text/plain|drms_types.h]] -- DRMS types and structure defintions.
Line 113: Line 113:
 * [wiki:DrmsModule DRMS Module] -- DRMS Module Structure and Overview
 * [wiki:DrmsApi DRMS API] -- DRMS Data Types and Structures and API
 * [wiki:DrmsMakeModule DRMS Module Compilation] -- Running 'make' for modules
 * [[DrmsModule|DRMS Module]] -- DRMS Module Structure and Overview
 * [[DrmsApi|DRMS API]] -- DRMS Data Types and Structures and API
 * [[DrmsMakeModule|DRMS Module Compilation]] -- Running 'make' for modules
Line 118: Line 118:
 * [wiki:JsocLibrary JSOC LIbrary] -- Creating and using a JSOC library  * [[JsocLibrary|JSOC LIbrary]] -- Creating and using a JSOC library
Line 121: Line 121:
 * [wiki:JsocMakefileBackground Background/Reference]
 * [wiki:JsocMakefileAdd How to add a sub directory]
 * [[JsocMakefileBackground|Background/Reference]]
 * [[JsocMakefileAdd|How to add a sub directory]]
Line 125: Line 125:
 * [wiki:DevNotes Development Notes Page]  * [[DevNotes|Development Notes Page]]
Line 128: Line 128:
 * [wiki:PgDBAdmin PostgreSQL]  * [[PgDBAdmin|PostgreSQL]]
Line 131: Line 131:
 * [wiki:JSOC Backup/Restore Notes Page]  * [[JSOC|Backup/Restore Notes Page]]
Line 134: Line 134:
 * [http://sun.stanford.edu/web.hmi/development/SU_Development_Plan/SUM_API.html API web page]  * [[http://sun.stanford.edu/web.hmi/development/SU_Development_Plan/SUM_API.html|API web page]]
Line 141: Line 141:
 * [http://hmi.stanford.edu/development/JSOC_Documents/JSOC_DSDS_Interface_Specification.pdf  Interface Specification (.pdf)]  * [[http://hmi.stanford.edu/development/JSOC_Documents/JSOC_DSDS_Interface_Specification.pdf|Interface Specification (.pdf)]]
Line 144: Line 144:
 * [wiki:AjaxJsocConnect AJAX Style Web Access for JSOC]  * [[AjaxJsocConnect|AJAX Style Web Access for JSOC]]
Line 153: Line 153:
 * [http://jsoc.stanford.edu/production/whattodolev0.txt][[BR]]  * [[http://jsoc.stanford.edu/production/whattodolev0.txt]]<<BR>>
Line 156: Line 156:
 * [http://jsoc.stanford.edu/production/dcs2_convert_to_0_or_1.txt][[BR]]  * [[http://jsoc.stanford.edu/production/dcs2_convert_to_0_or_1.txt]]<<BR>>

Describe DraftJsocDevelopersGuide here.

Tim, this one's for you.

Welcome to the Wiki for JSOC software development

For general information including the basic setup to get started see the Users Guide.

News

DRMS Data Series

named series and its current highest record number on stdout.

  • delete_series -- Removes a series and all its associated entries from DRMS.

JSOC Sessions, Pipelines, and Modules (''Oh my!'')

JSOC programs that use DRMS to operate on DataSeries are called "modules". Modules are run in "sessions". HMI and AIA major processing tasks are accomplished in "pipelines" consisting of one or more sessions. Pipelines are started by "PUI" (Pipeline User Interface) usually by the JSOC production team. Pipelines may also be initiated by users requesting DataSets via the web or by team members running locally or remotely. A DataSet is a collection of records selected by a query. In essence a dataset name is simply the query that describes it.

A DRMS Session is the basic unit of computing that interracts with DRMS and SUMS. At the start of a session the user connects to the DRMS database. During the session the user runs one or more modules which read or create DataRecords in DataSeries. Access to the actual data stored in SUMS is accomplished within a module via the DRMS API. At the end of a session, SUMS is notified to save any new records online and/or on tape, or to delete records marked temporary to the session.

Actually using the JSOC DRMS requires running a program or module. By "program" we mean a normal shell command and by "module" we mean a program built to run within a DRMS session and communication to a drms_server. There are four types of programs/modules:

  • Modules - Most programs that do the work of the user of JSOC are what we call "modules". On the outside modules look like programs. They must run in a DRMS session. If they are built with the normal jsoc_main program they will use an existing session if they are run from a Session Provider or will start their own use-once session if they are called stand-alone from the shell.

  • Utility programs like create_series and describe_series which are usually used to manage the existence of dataseries, not to use dataseries. These programs talk directly to the database.

  • Session Providers like drms_run or later the Pipeline User Interface start DRMS sessions and execute a script file. They can also be used to execute a single instance of a module.

  • drms_server which connects connects to the database and serves sessions. Most users will not need to start drms_server explicitly.

The benefit of running programs as "modules" will hopefully become apparent when we start running complex pipelines using hundreds of processors.

Setting up Your Own DRMS

Information for developers outside the JSOC who wish to construct an independent data archive that can work in cooperation with the JSOC and other archives (or completely independently) can be found on the Setting up Your Own DRMS page.

General Information

DRMS Man Pages

All the JSOC "man" pages are now maintained with doxygen, a semi-automatic documentation tool. They are available in html form via:

All programs and functions should have entries in the doxygen generated pages but some do not yet. Old documentation still exists for these:

Note that all modules built with jsoc_main share a basic set of flags and command line keywords. See module.1 in man1.

We will once again soon have unix-style man pages at man1, but not yet:

Limits

There are limits ...

  • memory limits on number of records in the cache (512Meg / (2.5*record size) ). While this may seem like a lot, for datasets with a lot of keywords (e.g. mdi_vw_V_06h) it can be a real limit to the number of records that can be open at a time. For the vw_V example it means that DRMS_QUERY_MEM should be set to at lest 2500 (yes 2.5 gig) to open 100 days of one-minute data. Modules expecting to need tens of thousands of records opened should arrange to do the work in blocks with drms_close_records used to empty the record cache to free memory.
  • length of names of series, keywords, etc. (64 chars)
  • length of comma sep list of prime key names (1024 chars)
  • length of descriptions of series, keywords, links, and segments (254 chars)
  • length of string values of keywords (dont know)
  • number of keywords in a record (dont know)
  • number of records in a series (no fixed limit)
  • length of segment filename (255 chars)
  • length of path (511 chars)

Log Files - Processing meta-data

There are log files. Stdout and Stderr are captured in files as well as shown during processing (depending on module and -v flag). These are all put into a SUMS directory and indexed in DRMS by session ID. The session ID is stored in each record so the log files can be retrieved if/when needed. Unless otherwise specified, the default retention time for log files is the maximum retention time of all SUs processed in the current session. The log files are archived if any one of the SUs in the current session is to be archived.

  • drms_server logs --
    • The default is no logging. When the logging option is turned on (-L), stdout and stderr are redirected to files in SU directory.
  • module logs --
    • The default is no logging. When the logging option is turned on (-L), stdout and stderr are tee-ed to files in SU directory.

Software Development - Building Modules

JSOC Software Tree

Making a JSOC/DRMS Module

Making a JSOC/DRMS Library

Notes on JSOC Makefile

Development Notes (old)

Database Administration

JSOC Backup and Restore

SUM API

JSOC Development Projects

DSDS-Data Access from JSOC

Exports

Remote DRMS/SUMS - netDRMS

JSOC Operator's Guide

Running Datacapture and lev0 Pipeline during SDI I&T

Convert the Spare dcs2 machine to an active AIA (dcs0) or HMI (dcs1)

JsocWiki: DraftJsocDevelopersGuide (last edited 2013-05-01 04:35:26 by localhost)