Dear colleagues,
As part of the efforts to get a faster VIIRS SDR processing I have
looked at the average timeliness we have here at SMHI when running CSPP
on full VIIRS swaths (one RDR VIIRS file) in operations. When calculated
over the last couple of days we have on average VIIRS swaths with a
length of around 9.3 SDR granules or 13.3 minutes. Here on our
operational server the timeliness varies between around 15 and 30
minutes, with an average of 21 minutes. Wall clock times that is:
('Minutes - N, min, max, mean: ', 31, 15.47, 30.04, 21.23)
This is with version 1.3 of CSPP (the most recent).
We have 24 CPUs, and CSPP only uses one. So, even if our server is
loaded with lots of other stuff we assume that CSPP gets the full power
from one CPU (not significantly shared with other processes).
The CSPP team informs they have a processing time of around 11 minutes
for a 10 minute swath. Our equivalent is then 15.8 minutes. So there
seem to be some discrepancy there. How they achieve this 30% better
processing speed is yet unknown to me. We have earlier tested running
CSPP on RAM disks and that did not make any significant difference in
speed. We run, as they do, without granule aggregation and without hdf5
compression.
So, any measures of the timeliness you experience would be most welcome!
Please, Meteo-France, UK-Met Office, Eumetsat and FMI, if you can make
some quick estimates of your local CSPP performance, share it!
Martin and I are now, looking into how we can run CSPP on granules as
they come in from RT-STPS if we run the latter in a server mode. This
patched RT-STPS is capable of taking in a stream of CADU data and make
RDR granules in real time.
SCISYS is doing this in test in Bochum, and they kindly provided us with
a case of such RDR granules (as we do not yet do this ourselves). We
processed those with CSPP and got SDR's. However, there is still a
problem with CSPP, when it doesn't know anything about its neighbouring
granules. Our data looked fine, *except* for several corrupted data
lines around the granule boundaries. So, this is unacceptable. I got the
following answer from the CSPP team:
"It sounds like you have identified an issue related to cross-granule
processing in CSPP. For the VIIRS SDR processing, adjacent granules are
not required to process a particular granule, but they will be used if
they are present. We may need to change the logic in streaming mode to
say that to process granule N, you need to have granules N-1 and N+1
available. This means you would have to wait an extra 90 seconds for
granule N+1 before you started processing granule N. Perhaps you can
implement this logic in your processing environment."
I think we can implement this logic. But I thought CSPP would be able to
do this for me. That is a pity.
Liam also said:
"On a related note, we have implemented a multi-core processing option
in the CSPP VIIRS SDR processing Python drivers. You can now specify
that 2 or more CPU cores be used at runtime to process individual
granules. There is no cross granule issue, because each instance of the
VIIRS SDR controller can still see all the unpacked RDR data for the DB
pass. A beta version of the CSPP SDR package with this feature should be
ready in the next few days, so we will send it to you for beta testing.
Our benchmarks have shown that with HDF5 compression and granule
aggregation disabled, the processing time for a 10-minute VIIRS DB pass
can be reduced from 11 minutes to less than 4 minutes."
That is of course a nice step forward, which should benefit us all!
Then, perhaps in a near future, there might not be a need to do the
processing on individual granules with several CSPP instances in parallel?
Best regards
Adam
--
Adam Dybbroe,
Satellite Remote Sensing Scientist,
Numerical models and Remote Sensing,
Core Services, Swedish Meteorological and Hydrological Institute (SMHI)
www.pytroll.org
nwcsaf.smhi.se
www.smhi.se