Thrifty - Cutils Command Qualifier
Introduction
While CumulusUtils was growing, it became clear that economising computer resources both for CPU as for the Internet usage could be economised. Especially for users on a paid line with low debit that would be useful. In that context it was decided to introduce the Thrifty qualifier to the All and Website commands. Later the qualifier was made available to all commands (single module runs).
Thrifty tries to effectively minimise what needs to be done to create the output i.e. it will not generate YADR output for years past as, once generated, the information will never change again. Every module has different methods and needs. This article describes how to invoke thrifty and what the user can expect.
This is a work in progress as user requests, new efficiency discoveries and efficiency code changes will change over time.
Note that CumulusMX itself uploads the data for the charts to the website. It is not advised to switch that off but verify you only send the data the charts you use require. The data will be the bulk of your transfers so it will count.
Operation
Thrifty is activated when placed before the command. When using it for multiple modules it can be placed anywhere on the commandline. See the following examples:
utils/bin/cumulusutils.exe Thrifty Website => This activates the Thrifty command qualifier on the Website generation utils/bin/cumulusutils.exe Thrifty All => This activates the Thrifty command qualifier on the All modules generation utils/bin/cumulusutils.exe Website Thrifty => This only runs Website, Thrifty is ignored utils/bin/cumulusutils.exe YADR Records Thrifty => This activates the Thrifty command qualifier on the named modules utils/bin/cumulusutils.exe Thrifty YADR Records => This activates the Thrifty command qualifier on the named modules utils/bin/cumulusutils.exe YADR Thrifty Records => This activates the Thrifty command qualifier on the named modules
Output
The Thrifty qualifier itself has no output, the output of the individual modules is limited as far as possible and as described in the Inner Working.
Inifile parameters
Thrifty has the inifile parameters as listed below. These parameters give the cycle in days of when a module is to be run. So if the user runs CumulusUtils on a daily basis and the WindGraphPeriod is three - as shown in the listing - then the WindGraphs will only be generated once every three days (this calculation is based on the daynumber in the year for that date).
[Thrifty] Top10RecordsPeriod=1 RainGraphsPeriod=1 TempGraphsPeriod=1 WindGraphsPeriod=3 MiscGraphsPeriod=1 SolarGraphsPeriod=3
Inner working
In this section for every module the effect of Thrifty is described and a summary is given. The explanation of thrifty starts by what you can do manually.
Uploading manually
When you upload manually you just need to know, it is not required to upload everything. Just upload the files which have changed or which have changed so much that you think it useful to upload them.
Always upload index.html after generating the website.
So here is the list from the distribution which you can safely NOT upload if there are no changes to the system (e.g. an Update), if they have been uploaded once:
- HighchartsDefaults.js
- gauges.js
- suncalc.js
- tween.min.js
- language.js
- RGraph.common.core.js
- RGraph.rose.js
- steelseries.min.js
These files will be generated by the Website command. If you did not change anything, they do NOT need to be uploaded:
- cumulusutils.js
- cumuluscharts.txt
- HighchartsLanguage.js
For each of the modules you can safely rarely upload the following because the changes are none or minimal. The files are listed with a minimal advised upload frequency:
- forecast.txt [advise: only initial (if you are using the Norwegian system or SpotWX) or daily (if you are using yourweather). No advise for WXSIM]
- graphsmisc.txt, graphsrain.txt, graphstemp.txt, graphswind.txt, graphssolar.txt [advise: every other day]
- noaa.txt [advise: every 2d day of the month]
- Yadr.txt [advise: Every year, 2 January]
- Yadr[func][year].txt [advise: Every day] where func is : Rain, Hum, Temp, Press and Wind and where year is THE CURRENT YEAR. All other data files from previous years are already uploaded and won't change and therefore don't need to be uploaded nor generated]
- The records files (top10, records and dayrecords) need only upload if a new records is set.
- Stationmap.txt [advise: once per year]
The above is the advise if you are uploading manually and make the decisions on your own. It is also important for understanding what is happening in the automatic Thrifty system. If you upload automatically everything this is being taken care of : a module is generated and uploaded only according to the above specification.
Uploading Automatically
The decision to automatically upload a file or not - assuming DoUploadFTP=true = is done on the basis of two parameters:
- Have the cycle conditions become true
- Has a file been modified
Some modules have a period in days associated with them which determines if the module is run and uploaded at all. An example is e.g. every third day for the graphs because either the user does not look at this so often of the chart does not change that much on the basis of one or two days. Default the cycles are set to one day which means the cycle condition will always be true.
The modification of the file is being done either during the data selection (in which case the generation of the module output will be finished) or because of the algorithm in which case some of the output will not be generated. This is done by setting the Dirty bit. Which is simply a flag that - if true - says : yes the output has changed since yesterday so it needs to be generated and uploaded.
Examples: