IPP Software Navigation Tools IPP Links Communication Pan-STARRS Links

Ignore:
Timestamp:
Apr 9, 2004, 3:14:49 PM (22 years ago)
Author:
eugene
Message:

major rewrite of pixel server, added sections for metadata.db,
object.db, controller.db. the scheduler still needs some work.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/doc/design/specs.tex

    r409 r413  
    1 %%% $Id: specs.tex,v 1.1 2004-04-09 02:25:41 eugene Exp $
     1%%% $Id: specs.tex,v 1.2 2004-04-10 01:14:49 eugene Exp $
    22\documentclass[panstarrs]{panstarrs}
    33
     
    5353Open Issues and TBDs in this document are marked \tbd{in bold, red
    5454with surrounding square brackets}.
     55
     56All timing measurements are to execution time as measured on a
     57\tbd{Reference Pan-Starrs Computation Node} and assumed to be not
     58limited by network bandwidth.
     59
    5560
    5661%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
     
    279284\paragraph{Pixel Server}
    280285
    281 \begin{itemize}
    282 \item $T_{\rm min}$ is the minimum time between exposures.  $T_{\rm min}$ is
    283 assumed to always be $\ge 30s$.
    284 \item All timing measurements are to execution time as measured on a
    285 \tbd{Reference Pan-Starrs Computation Node} and assumed to be not limited
    286 by network bandwidth.
    287 \end{itemize}
    288 
    289 \begin{enumerate}
    290 \item IPP Pixel Data Scheduler
    291 \item IPP Pixel Data Locality Optimizer
    292 \item IPP Pixel Data Database
    293 \item IPP Pixel Data Retrieval Agent
    294 \item IPP Pixel Data Query Library
    295 \item IPP Pixel Data I/O Library
    296 \end{enumerate}
    297 
    298 \subparagraph{IPP Pixel Data Scheduler (IPP-PDS)}
    299 
    300 {\it Inputs}
    301 
    302 \begin{itemize}
    303 \item Accepts an XML document containing the type of operation and image
    304 meta-data if applicable.
    305 \end{itemize}
    306 
    307 The input document is one of the follow classes of message.
    308 
    309 \begin{itemize}
    310 \item {\em new data notification}
    311 \item {\em move data request}
    312 \item {\em copy data request}
    313 \item {\em delete data request}
    314 \end{itemize}
    315 
    316 \tbd{The format of this XML doc is TBD.}
    317 \tbd{The application layer transport protocol is TBD.}
    318 
    319 {\it Outputs}
    320 
    321 Outputs an XML document containing one or more {\em data managements tasks}.
    322 This document is to be passed through all registered filters that match it's
    323 task type.  The document is then sent to the IPP Controller.
    324 
    325 The IPP-PDS can fulfill all of it's modes of operations by generating just two
    326 types of {\em data management tasks}.
    327 
    328 \begin{itemize}
    329 \item {\em retrieve data task}
    330 \item {\em delete data task}
    331 \end{itemize}
    332 
    333 Seemingly there should be a third task type {\em move data} but this can be
    334 broken down into a {\em retrieve data} task and a {\em delete data}.  This
    335 strategy has the added benefit of adding atomicity to the operation.
    336 
    337 \tbd{The format of this XML doc is TBD.}
    338 \tbd{The application layer transport protocol is TBD.}
    339 
    340 {\it Configuration}
    341 
    342 A configuration file defining at least the address of IPP Controller and the
    343 IPP Pixel Data Database connection string.
    344 
    345 \tbd{The format of this file is TDB.}
    346 
    347 {\it Performance}
    348 
    349 The IPP-PDS must be able to concurrently:
    350 
    351 \begin{itemize}
    352 \item receive and process 260 {\em new data notifications} in less time
    353 then ${T_{\rm min}}$.
    354 \item generate, filter, and transmit 260 {\em data management tasks} in less
    355 time then ${T_{\rm min}}$.
    356 \end{itemize}
    357 
    358 \subparagraph{IPP Pixel Data Locality Optimizer (IPP-PDLO)}
    359 
    360 {\it Inputs}
    361 
    362 \begin{itemize}
    363 \item Accepts an XML document containing one or {\em data management tasks}.
    364 \end{itemize}
    365 
    366 \tbd{The format of this XML doc is TBD.}
    367 \tbd{The I/O protocol is TBD (possibly stdin/stdout).}
    368 
    369 {\it Outputs}
    370 
    371 \begin{itemize}
    372 \item Outputs an XML document containing one or {\em data management tasks}.
    373 \end{itemize}
    374 
    375 \tbd{The format of this XML doc is TBD.}
    376 \tbd{The I/O protocol is TBD (possibly stdin/stdout).}
    377 
    378 \subparagraph{Configuration}
    379 
    380 A configuration file defining what sort of optimization should be done and
    381 the IPP Pixel Data Database connection string.
    382 
    383 \tbd{The format of this file is TDB.}
    384 
    385 \subparagraph{Performance}
    386 
    387 \begin{itemize}
    388 \item The time spent in this filter should be added to the execution timing of
    389 the IPP Pixel Data Scheduler and can not cause it to exceed $T_{\rm min}$.
    390 \end{itemize}
    391 
    392 \subparagraph{IPP Pixel Data Database (IPP-PDD)}
    393 
    394 The IPP Pixel Data Database will maintain a record of {\em new data notifications}
    395 received from the Summit Pixel Server, the storage location of downloaded but
    396 unreduced image data, the storage location of reduced image data, the storage
    397 location of stacked image data, and the storage location of calibration data.
    398 \tbd{In addition to the storage location(s) of image data some or all of it's
    399 associated meta-data will contained in the IPP-PDD}
    400 
    401 {\it Interfaces}
    402 
    403 \begin{itemize}
    404 \item Native database bindings
    405 \item ODBC
    406 \end{itemize}
    407 
    408 {\it Configuration}
    409 
    410 \tbd{Database scheme is TBD.}
    411 
    412 {\it Functionality}
    413 
    414 \begin{itemize}
    415 \item Linux $\ge$ 2.4.x and Glibc $\ge$ 2.3
    416 \item SQL Syntax $\ge$ SQL-99
    417 \item native bindings for C and Perl
    418 \item databases size $\ge 1TB$
    419 \item ODBC $\ge 3.5$
    420 \item basic stored procedure support
    421 \item hot backups
    422 \item replication
    423 \end{itemize}
    424 
    425 {\it Performance}
    426 
    427 \begin{itemize}
    428 \item Process $> 30 \times 260$ select, insert, update, or delete queries in less time then
    429 ${T_{\rm min}}$.
    430 \end{itemize}
    431 
    432 \subparagraph{IPP Pixel Data Retrieval Agent (IPP-PDRA)}
    433 
    434 One instance of the IPP Pixel Data retrieval Agent is spawned per
    435 {\em data management task} that needs to be serviced.  The IPP Pixel Data I/O
    436 Library will be used to retrieve a URI into memory and to write data from
    437 memory to a specified URI.  \tbd{File lock management may or may not be
    438 necessary within this component.}
    439 
    440 {\it Inputs}
    441 
    442 \begin{itemize}
    443 \item Accepts an XML document containing one or {\em data management tasks}.
    444 \end{itemize}
    445 
    446 \tbd{The format of this XML doc is TBD.}
    447 \tbd{The I/O protocol is TBD (possibly stdin/stdout).}
    448 
    449 {\it Outputs}
    450 
    451 \begin{itemize}
    452 \item Returns an XML document containing one or completed {\em data management tasks}.
    453 \end{itemize}
    454 
    455 \tbd{The format of this XML doc is TBD.}
    456 \tbd{The I/O protocol is TBD (possibly stdin/stdout).}
    457 
    458 {\it Configuration}
    459 
    460 A configuration file defining the address of the IPP Controller.
    461 
    462 \tbd{The format of this file is TDB.}
    463 
    464 {\it Performance}
    465 
    466 \begin{itemize}
    467 \item Must capable of fully saturating a $1Gb/s$ network connection via the
    468 IPP-PDIOL.
    469 \end{itemize}
    470 
    471 \subparagraph{IPP Pixel Data Query Library (IPP-PDQL)}
    472 
    473 The IPP Pixel Data Query Library must hide all SQL details from the caller.
    474 
    475 {\it Interfaces}
    476 
    477 \begin{itemize}
    478 \item C API
    479 \item Perl (XSub of the C API) API
    480 \end{itemize}
    481 
    482 {\it Configuration}
    483 
    484 A configuration file with the database connection string.
    485 
    486 \tbd{The format of this file is TDB.}
    487 
    488 {\it Query Types}
    489 
    490 The IPP-PDQL only supports simple database queries.
    491 
    492 \tbd{The specific queries supported is TDB.}
    493 
    494 {\it Performance}
    495 
    496 \begin{itemize}
    497 \item Process $> 30$ select, insert, update, or delete queries in less time then
    498 ${T_{\rm min}}$.
    499 \end{itemize}
    500 
    501 \subparagraph{IPP Pixel Data I/O Library (IPP-PDIOL)}
    502 
    503 The IPP Pixel Data I/O Library retrieves data from or writes data to \cite{uri}s.
    504 Must be able to download multiple segments of a file simultaneously if the
    505 transport protocol supports it.  Similar to the \cite{proz} download accelerator.
    506 Must be able to handle file locking issues if the transport protocol supports it.
    507 The HTTP/WEBDAV protocol should be implement with the \cite{neon} library.
    508 
    509 {\it Interfaces}
    510 
    511 \begin{itemize}
    512 \item C API
    513 \item Perl (XSub of the C API) API
    514 \end{itemize}
    515 
    516 {\it Configuration}
    517 
    518 A configuration file defining the optional behaviors for the protocols that
    519 have optional features.
    520 
    521 \tbd{The format of this file is TDB.}
    522 
    523 {\it Protocols}
    524 
    525 Must support at least the following protocols:
    526 
    527 \begin{itemize}
    528 \item \cite{http}
    529 \item \cite{http} w/\cite{webdav}
    530 \item \cite{ftp}
    531 \item \cite{rsync}
    532 \item file
    533 \end{itemize}
    534 
    535 {\it Performance}
    536 
    537 \begin{itemize}
    538 \item Must capable of fully saturating a $1Gb/s$ network connection.
    539 \end{itemize}
    540 
    541 \subparagraph{Pixel Data Flow}
    542 
    543 \subparagraph{Bandwidth}
    544 
    545 \begin{enumerate}
    546 \item Summit Pixel Server(s)
    547 \begin{itemize}
    548 \item $n \times$ \tbd{TBD}
    549 \begin{itemize}
    550 \item $\frac{2 \times 2.4Gb/s}{n}$
    551 \end{itemize}
    552 \end{itemize}
    553 \item Summit Core Switch
    554 \begin{itemize}
    555 \item Cisco 65xx
    556 \begin{itemize}
    557 \item $2 \times 2.4Gb/s$
    558 \end{itemize}
    559 \end{itemize}
    560 \item Summit Border Router
    561 \begin{itemize}
    562 \item Cisco 76xx
    563 \begin{itemize}
    564 \item $1 \times 2.4Gb/s$
    565 \end{itemize}
    566 \end{itemize}
    567 \item Summit $\Longleftrightarrow$ Data Center connection (WAN link)
    568 \begin{itemize}
    569 \item $2 \times 1Gb/s$ Ethernet (over ATM/Sonet) or OC-48 Sonet
    570 \begin{itemize}
    571 \item $1 \times 2.4Gb/s$
    572 \end{itemize}
    573 \end{itemize}
    574 \item Data Center Border Router
    575 \begin{itemize}
    576 \item Cisco 76xx
    577 \begin{itemize}
    578 \item $1 \times 2.4Gb/s$
    579 \end{itemize}
    580 \end{itemize}
    581 \item IPP Cluster Core Switch
    582 \begin{itemize}
    583 \item Cisco 65xx
    584 \begin{itemize}
    585 \item $48Gb/s$
    586 \end{itemize}
    587 \end{itemize}
    588 \item IPP Cluster Nodes
    589 \begin{itemize}
    590 \item $240 \times$ \tbd{Reference Pan-Starrs Computation Node}
    591 \begin{itemize}
    592 \item $\frac{48Gb/s}{240}$
    593 \end{itemize}
    594 \end{itemize}
    595 \item Extended Network
    596 \begin{itemize}
    597 \item Cisco 65xx
    598 \begin{itemize}
    599 \item \tbd{TBD}
    600 \end{itemize}
    601 \end{itemize}
    602 \item Static Sky DB, other components, etc.
    603 \begin{itemize}
    604 \item \tbd{TBD}
    605 \begin{itemize}
    606 \item \tbd{TBD}
    607 \end{itemize}
    608 \end{itemize}
    609 \end{enumerate}
    610 
    611 \begin{figure}
    612 \begin{center}
    613 % \resizebox{!}{20cm}{\includegraphics{pixel_wan.epsi}}
    614 \caption{ \label{acquisition} Pixel Data Flow: Bandwidth}
    615 \end{center}
    616 \end{figure}
    617 \pagebreak
    618 
    619 \subparagraph{Bandwidth Estimates}
    620 
    621 {\it Assumptions}
    622 
    623 \begin{itemize}
    624 \item $T_{\rm min} = 30s$
    625 \end{itemize}
    626 
    627 {\it Exposure with overclocks in integer}
    628 
    629 {\it Storage Size}
    630 $$2bytes \times (4096^2pixels \times 1.125overclocks) \times 240otas = 72477573120b$$
    631 
    632 {\it Bandwidth Requirement}
    633 $$\frac{72477573120b}{T_{\rm min}} = 2415919104b/s$$
    634 
    635 {\it Exposure in float}
    636 
    637 {\it Storage Size}
    638 $$4bytes \times 4096^2pixels \times 240otas = 128849018880b$$
    639 
    640 {\it Bandwidth Requirement}
    641 $$\frac{128849018880b}{T_{\rm min}} = 4294967296b/s$$
    642 
    643 {\it Stacked exposure in float}
    644 
    645 {\it Storage Size}
    646 $$4bytes \times 4096^2pixels \times 60otas = 32212254720b$$
    647 
    648 {\it Bandwidth Requirement}
    649 $$\frac{32212254720b}{T_{\rm min}} = 1073741824b/s$$
    650 
    651 {\it Full calibration set in float}
    652 
    653 $$(1 \times debias, 1 \times dark, 1 \times flat, 2 \times fringe, 2 \times sky)$$
    654 
    655 {\it Storage Size}
    656 $$7 \times (exposure\ in\ float) = 901943132160b$$
    657 
    658 {\it Bandwidth Requirement}
    659 $$\frac{901943132160b}{T_{\rm min}} = 30064771072b/s$$
    660 
    661 {\it Aggregate Bandwidth Requirement}
    662 
    663 \begin{center}
    664 % \begin{tabular}{>{$}l<{$}>{$}r<{$}l}
    665 \begin{tabular}{lrl}
    666 [phase 2]&&\\
    667  & 2415919104b/s & summit $\rightarrow$ disk (exposure)\\
    668 +& 2415919104b/s & non-local disk $\rightarrow$ memory (exposure)\\
    669 +& 30064771072b/s& non-local disk $\rightarrow$ memory (calibration)\\
    670 +& 4294967296b/s & memory $\rightarrow$ non-local disk (reduced)\\
    671 \cline{1-2}
    672  & 39,191,576,576b/s &\\
    673 
    674 [phase 4]&&\\
    675  & 4294967296b/s & non-local disk $\rightarrow$ memory (reduced)\\
    676 +& 1073741824b/s & non-local disk $\rightarrow$ memory (best)\\
    677 +& 1073741824b/s & non-local disk $\rightarrow$ memory (working)\\
    678 +& 1073741824b/s & memory $\rightarrow$ non-local disk (diff)\\
    679 +& 1073741824b/s & memory $\rightarrow$ non-local disk (working)\\
    680 \cline{1-2}
    681  & 8,589,934,592b/s &\\
    682 
    683 [total]&&\\
    684  & 39191576576b/s & [phase 2] total\\
    685 +& 8589934592b/s & [phase 4] total\\
    686 \cline{1-2}
    687  & 47,781,511,168b/s & $\sim48Gb/s$
    688 \end{tabular}
    689 \end{center}
    690 
    691 \subparagraph{IPP Pixel Data Database Query Estimates}
    692 
    693 {\it Assumptions}
    694 
    695 \begin{itemize}
    696 \item There is no caching of query results.
    697 \end{itemize}
    698 
    699 {\it Acquisition}
    700 
    701 \begin{itemize}
    702 \item select new data notification from IPP Data Scheduler
    703 \item insert new data notification from IPP Data Scheduler
    704 \item select from IPP Pixel Data Locality Optimizer
    705 \item select new data notification from IPP Pixel Data Scheduler
    706 \item update new data notification from IPP Pixel Data Scheduler
    707 \item select data available from IPP Pixel Data Scheduler
    708 \item insert data available from IPP Pixel Data Scheduler
    709 \end{itemize}
    710 
    711 {\it Phase 2}
    712 
    713 \begin{itemize}
    714 \item select data available from IPP Scheduler
    715 \item select $\times 7$ calibration data from IPP Image Agent
    716 \item select data available from IPP Scheduler
    717 \item update data available from IPP Scheduler
    718 \item select reduced data available from IPP Scheduler
    719 \item insert reduced data available from IPP Scheduler
    720 \end{itemize}
    721 
    722 {\it yPhase 4}
    723 
    724 \begin{itemize}
    725 \item select reduced data available from IPP Scheduler
    726 \item select $\times 2$ stacked data from IPP Image Agent
    727 \item select reduced data available from IPP Scheduler
    728 \item update reduced data available from IPP Scheduler
    729 \item select stacked data available from IPP Scheduler
    730 \item insert stacked data available from IPP Scheduler
    731 \item select difference data available from IPP Scheduler
    732 \item insert difference data available from IPP Scheduler
    733 \end{itemize}
    734 
    735 \begin{verbatim}
    736 \bibitem[Link aggregation]{aggregation}
    737 http://cisco.com/en/US/products/hw/switches/ps708/products\_configuration\_guide\_chapter09186a008019f011.html
    738 \bibitem[ProZilla]{proz}
    739 http://prozilla.genesys.ro/
    740 \bibitem[neon]{neon}
    741 http://www.webdav.org/neon/
    742 \bibitem[Uniform Resource Identifiers (URI)]{uri}
    743 ftp://ftp.rfc-editor.org/in-notes/rfc2396.txt
    744 \bibitem[HTTP]{http}
    745 ftp://ftp.rfc-editor.org/in-notes/rfc2616.txt
    746 \bibitem[WEBDAV]{webdav}
    747 ftp://ftp.rfc-editor.org/in-notes/rfc2518.txt\\
    748 ftp://ftp.rfc-editor.org/in-notes/rfc3253.txt\\
    749 ftp://ftp.rfc-editor.org/in-notes/rfc3648.txt
    750 \bibitem[FTP]{ftp}
    751 ftp://ftp.rfc-editor.org/in-notes/rfc454.txt
    752 \bibitem[rsync]{rsync}
    753 http://rsync.samba.org/
    754 \end{verbatim}
     286The IPP Pixel Server \tbd{rename as Image Server?} is a large data
     287store for all images used by the IPP.  The Pixel Server is required to
     288store all of the images needed by the IPP for the length of time they
     289are required; total data volume is specified in detail in the hardware
     290summary, but is in the vicinity of \tbd{700 GB}.
     291
     292The IPP Pixel Server must maintain a record of all images currently
     293available in the repository \tbd{and all no longer available}.  This
     294record shall include the image name, location (which machine), the
     295state of the image (available, deleted), the image size, the image
     296type, and the existence and location of secondary copies of the
     297image.  This information need not include other metadata such as the
     298image summary statistics or the state of the image processing for the
     299image.
     300
     301The IPP Pixel Server shall store images as FITS files on disk.  Raw
     302images from the telescope shall be stored as individual OTA images for
     303each file, with multiple Cell images per file as well as video
     304sequences from the guide stars.  Images of the Static Sky shall be
     305stored in the form of \tbd{triangular segments} to minimize the total
     306data volume and pixel overlap.
     307
     308The IPP Pixel Server shall distribute images across a cluster of
     309machines.  The IPP Pixel Server shall be capable of honoring requests
     310to store an image on a specific machine.  If such a request cannot be
     311honored, the IPP Pixel Server shall select an appropriate machine and
     312notify the requesting agent of the new locations.  The IPP Pixel
     313Server shall provide a mechanism to maintain multiple (at least two)
     314copies of a single known image.
     315
     316The IPP Pixel Server must interface with other subsystems of the IPP.
     317It must provide an interface to other IPP subsystems to identify the
     318image location (the computer on which it resides).  It must provide a
     319mechanism to serve a specified image to another IPP or Pan-STARRS
     320subsystem.  It must provide a mechanism for deletion of images in the
     321Pixel Server.  It must have a mechanism to accept or retrieve an image
     322from another Pan-STARRS subsystem, in particular OATS.  Communication
     323of messages between the IPP Pixel Server and other subsystem shall be
     324via \tbd{XML messages} passed via \tbd{some transport}.
     325
     326The IPP Pixel Server must accept images at the telescope maximum rate
     327of 1 full-camera image every 30 seconds.  The IPP Pixel Server must
     328accept notifications and process retrievals at a rate of 128 raw OTAs
     329per 60 seconds.
     330
     331\tbd{O/S, language, SQL, ODBC requirements?}
     332
     333\tbd{hardware requirements?}
     334
     335\tbd{communication protocols?}
     336
     337\paragraph{P\&A Database}
     338
     339The IPP requires a mechanism to store data related to astronomical
     340objects derived from various sources with a variety of associations.
     341The PnA (Photometry and Astrometry) Database serves this function.
     342The PnA Database deals with two related concepts: {\em objects} and
     343{\em detections}.  The objects are descriptions of astronomical
     344objects while the detections are the specific measurements of those
     345objects on an image.  A collection of {\em detections} may be used to
     346derive average quantities which describe a particular {\em object}.
     347
     348The PnA Database must store the collections of detections which were
     349derived from specific images from any of the analysis stages.  It must
     350be possible to determine and locate (perhaps via interactions with the
     351pixel server) the image from which a specific detection was derved.
     352It must also be possible to extract all detections derived from a
     353specific images.  These associations must include descriptive
     354information including the coordinates of the detection on the image.
     355
     356The PnA Database must provide a mechanism to associate together
     357multiple detections of a specific object.  Several major classes of
     358objects will be present, each of which must be handled correctly.
     359
     360First, the distant stars will have nearly fixed locations relative to
     361other nearby stars, with only small deviations for individual
     362measurements.  The association between multiple detections of such
     363objects must be made on the basis of their coincident positions.  The
     364PnA Database must be able to determine the average position of the
     365object and the deviations of the individual detections from that
     366average. 
     367
     368Second, solar system objects do not have a fixed location and
     369detections of such objects must associated on the basis of their
     370coincidence with the orbit of the objects.  The PnA Database must be
     371able to associate detections with the orbits of known objects.  The
     372determination of this association is the responsibility of the MOPS
     373and must be communicated to the IPP PnA Database on \tbd{some
     374  timescale}.  The PnD Database must be able to retrieve the
     375detections associated with the object and to provide the object
     376associated with the specific detections.  This association must
     377include descriptive information such as the offset of the detection
     378from the predicted location of the detection based on the orbit.
     379
     380Third, stars in the general vicinity of the solar system fall in
     381between these first two classes of objects.  Their proper motion and
     382parallax response is significant enough ($>1\asec$ in 10 years) that
     383they are not well-described by an average location and a collection of
     384offsets.  These objects must be described by a distance and a proper
     385motion vector.  The PnA Database must be able to find and associate
     386detections of objects for which either of the parallax or the proper
     387motion are substantial. 
     388
     389Fourth, many detections, especially in their initial states, will not
     390be associated with a specific astronomical object of any of the above
     391classes and should be treated as orphans.  Some of these will be
     392suprious (not represent real objects), some will be from solar system
     393objects for which orbits are not yet determined, some will be from
     394faint stars near the detection limits, some will be from short-term
     395transients which have only been detected once.  The PnA Database must
     396be able to carry these detections until they have been associated with
     397one of the objects above.  It must be possible to migrate individual
     398detections associated with an astronomical object back to the orphan
     399state. 
     400
     401For every object, and all orphaned detections, it must be possible to
     402determine the images for which the coordinates were included but for
     403which no detection was made.  The minimum set of information which
     404must be carried for these non-detections is the image and the
     405associated object or orphan.
     406
     407The PnA Database must store the relationships between various
     408photometric systems and, in some cases, the evolution of that
     409relationship.  It must be possible, given a determined set of
     410calibrations, to convert between the measured instrumental magnitude
     411of a detection with a specific filter, detector, and telescope, and at
     412particular time and the implied magnitude in the average Pan-STARRS
     413magnitude systems.  It must also be possible, given the magnitudes of
     414an object in one system to convert those to the magnitudes in another
     415system; an example of such a conversion is between the average
     416Pan-STARRS filter systems and the various reference systems
     417appropriate for those filters.
     418
     419The PnA Database must provide interfaces to extract lists of objects
     420and detections based on various query parameters.  It must be possible
     421to extract all detections associated with a specific object, all
     422non-detections of that object (or orphan) and summary statistics from
     423these collections.  It must be possible to extract all objects or
     424detections within specified spatial regions including regions bounded
     425by great circles (RA,DEC; GLAT,GLON; ELAT,ELON) and regions described
     426by a location and a search radius.  It must be possible to extract the
     427image parameters associated with a specific detection including image
     428coordinates of the detection, exposure time, time and date of the
     429detection, etc.
     430
     431\tbd{volume requirements}
     432
     433\tbd{speed / access requirements}
     434
     435\paragraph{Metadata Database}
     436
     437The IPP requires a Metadata Database to store and provide access to
     438metadata of various types and from various sources.  Metadata in the
     439context of the IPP represents all data which is not included in the
     440two data stores discussed above (Images and Detection/Objects).
     441Metadata is generated at the telescope and during the various analysis
     442stages
     443
     444The Metadata Database must store and provide metadata for all raw
     445images, for processed images, for the calibration images (both raw and
     446master), for the extracted object lists.  Metadata describing the
     447environmental conditions at the telescope must also be stored and
     448provided as needed. 
     449
     450If analysis results are exchanged via the metadata database, it must
     451provide access to the queried data on timescales of $<2 sec$ to avoid
     452slowing down the analysis systems.
     453
     454\tbd{volume requirements}
     455
     456\tbd{does the description of images belong in the Metadata database or
     457  in the Pixel / Image Server?}
     458
     459\tbd{queries}
     460
     461\paragraph{Configuration Database -- a subset of the metadata database?}
     462
     463The IPP requires a Configuration Database to store and provide access to
     464information about the IPP itself.  Examples of data in the
     465configuration database include the default parameters for the various
     466analysis programs, the description of the computing environment, the
     467process status information, etc. 
     468
     469\paragraph{Controller}
     470
     471The IPP uses a collection of computers to store and process images and
     472to manipulate collections of detections.  These computers perform any
     473of a large number of analysis stages or other processing tasks without
     474significant interprocess communication.  It is necessary to have a
     475mechanism which initiates computing tasks on the different computers,
     476which monitors the tasks as they are executed, which handles the
     477output and the errors from these tasks, and which reacts to the
     478failure of any of the computing nodes.  The system responsible for the
     479tasks in the IPP is the Controller.
     480
     481The Controller must interact with the collection of computers under
     482its management and with other subsystems in the IPP.  The controller
     483must accept a variety of inputs from other subsystems, described
     484below, and respond accordingly.  The controller must also provide
     485information to other subsystems on demand.
     486
     487Computers managed by the controller are allowed to be in one of
     488several states, and the controller must interact with it in an
     489appropriate way for each of those states.  A computer may be {\tt
     490alive}, {\tt dead} or {\tt off}.  If the computer is {\tt alive}, it
     491responds to commands from the controller and may be used for tasks
     492subject to other constraints.  If it is {\tt dead}, the computer is
     493not responsive and should not be used for executing tasks.  The
     494controller must identify computers which have died and occasionally
     495test them to see if they are {\tt alive} again.  Computers which are
     496{\tt off} are not available for tests and should not be tested.
     497Computers may be set to the {\tt off} or {\tt dead} states by external
     498subsystems; it is the responsibility of the Controller to move a
     499computer to the {\tt alive} state if possible. 
     500
     501Computers which are in the {\tt alive} state may be in one of two
     502modes: {\tt busy} and {\tt free}.  A computer which is {\tt busy}
     503currently has a task assigned to it.  The controller may only assign
     504one task to one computer at a time\footnote{a physical piece of
     505hardware may be defined to the Controller as multiple computers to
     506allow multi-processor nodes to execute more than one simultaneous
     507task.}.  Computers which are in the {\tt free} state may have tasks
     508assigned to it.  The controller must also manage an additional set of
     509constraint tables for each machine: the allowed tasks.  Each computer
     510may have a list of allowed tasks which may include {\tt all} tasks,
     511{\tt none} of the tasks, or specified task names.  The controller must
     512only execute the allowed tasks on a machine. 
     513
     514The Controller must accept tasks from other IPP subsystems.  The task
     515requests must include the specific command to be executed.  The
     516commands must be in the form of a UNIX command which could be
     517performed on any of the computing nodes.  Any input or output data
     518structures in the commands must be a valid resource regardless of the
     519node on which the task is executed.  Input and output data resources
     520must be unique where necessary to avoid conflicts.  Tasks must be
     521given an identified, which must be returned to the requesting agent,
     522to be used to control the specific task.
     523
     524Task requests may specify a desired node for the task execution.  The
     525Controller must attempt to honor the request if the node is {\tt
     526alive}, but must execute on another node if the requested one is {\tt
     527dead} or {\tt off}.  Even if a node is {\tt alive} the controller must
     528choose another node if the specified tasks is not allowed on the
     529requested node.  In all other cases, the controller must wait until
     530executing processes, and processes with higher priority, are completed
     531before executing the specified task on the requested node.
     532
     533Task requests may specify an urgency level.  The controller determines
     534the priority of the task by sorting first by priority and next by the
     535sequence of the request.  An executing task must be completed before
     536any new task is started, regardless of priority.  Tasks may be
     537assigned a priority of 0 in which case they are maintained in the
     538queue and never executed. 
     539
     540The controller must monitor the output streams from the executing
     541tasks and the exit status of the tasks.  \tbd{where do we send the
     542output logs?}.  The status, including the exit status, of each task
     543must be maintained for other subsystems to query as needed.  \tbd{how
     544long?  on disk / database?}
     545
     546The controller must accept commands from other IPP subsystems.  These
     547commands include those which govern the processing of specified tasks,
     548those which govern the behavior of specific computing nodes, and those
     549which request information from the controller.  The controller must be
     550able to halt the execution of a specified task, delete an unexecuted
     551task from the task list, change the priority of tasks, change the
     552requested nodes for tasks.  The controller must also be able to stop
     553the current execution of a task and push it to the end of the queue
     554and also change its priority.
     555
     556The controller must honor requests to change the mode of any computing
     557node on demand between {\tt off} and {\tt dead}.  It must also be able
     558to change the list of allowed tasks as requested by external
     559commands. 
     560
     561The controller must respond to informational requests regarding the
     562collection of machines and their states as well as the collection of
     563tasks and their states.  The controller must monitor the execution
     564times of the different tasks and provide summary statistics.  Finally,
     565the controller must respond to three top-level commands: {\tt finish},
     566{\tt stop} and {\tt abort}.  When {\tt finish} is requested, no more
     567new tasks are accepted, and when all tasks have completed, the
     568controller must exti.  When {\tt stop} is requested, the currently
     569executing tasks must be completed at which point the controller must
     570exti.  When {\tt abort} is issued, the controller immediately kills
     571all executing tasks and exits.
     572
     573\paragraph{Scheduler}
    755574
    756575\subsubsection{Analysis Stages}
Note: See TracChangeset for help on using the changeset viewer.