Hi Melissa,
Apologies in advance for the length of this response - I thought it would be helpful to answer in detail with a bit more information on some of the topics.
The cron system is there to run periodic tasks within Moodle. As others have noted, these include things such as course backups, statistics, log file cleanup, forum notifications, awarding badges, various cleanups, sending passwords to new users, etc. You can see a list of these tasks by going to Site administration -> Server -> Scheduled Tasks. Note, this list is mostly complete but some tasks are run by the "Legacy cron processing for plugins" task.
It has always been the case that we do not run all cron tasks every time you run cron. Some of these only happen once an hour, some once a day, some at pre-defined times of day, and some do run every time that you call cron.
In Moodle 2.7 we rewrote the cron system and renamed it the `Scheduled Task` system. The new system gives you, the administrator, much greater control over the way that cron is run on your system. For example, you can disable tasks or change their frequency from the user interface. Unfortunately it does not yet list the status of tasks but it does list the last time that a job was run, as well as the next time that it is due to start.
This new Scheduled Task system differs to the old Moodle cron system of 2.6 and before in two key ways. Firstly it breaks everything into more manageable parts. Rather than having a single cron task managed by a developer, it is now compartmentalised into a number of tasks which are individually controllable. The developer suggests sensible defaults which you can tune to your requirements. Secondly (in developer speak) it handles `locking` of tasks -- this means that it prevents the same task from running twice at the same time. This is the part that your server guy was concerned about - since Moodle 2.7, he no longer needs to worry about this.
Prior to Moodle 2.7, it was not advisable to have cron running multiple times simultaneously - in fact, it was to be avoided because it could cause problems.
Since Moodle 2.7, it doesn't matter if cron runs overlap. If this does happen, the second cron run just picks up the next task that was to be completed and the two processes help one another. This is great if you have slow task waiting to complete. For example, the badge awarding process on moodle.org can take a very long time to complete. Before Moodle 2.7 when this task ran and we awarded the Particularly Helpful Moodler badge, forum notifications stopped being sent out. Since Moodle 2.7, the awarding of badges can still take a very long time, but it no longer prevents the forum notifications from being sent out.
Nowadays we recommend that you run cron as often as possible - if possible every minute. If you do not then there is an effect on end-user experience for two primary reasons:
- Notifications won't be sent! This is the main one. Things like forum notifications and new user passwords are sent by cron. If you only run cron once a day then your new users won't receive their passwords until the following day; and
- Several of the jobs are cleanup jobs. The remove old log entries, clear caches, and that kind of thing. Performance shouldn't really suffer too much with these in place (we build to scale), but it's generally better to have them running.
Regarding time to complete, I'm afraid that there is no fixed guideline. It really depends on many things, including:
- hardware, database tuning, etc.;
- number of active users;
- number of badge awards;
- number of forum posts being notified;
- whether you're running course backups and how big those courses are;
- whether you're processing statistics;
- any enrolment plugins you have which need to synchronise;
- how long the piece of string you keep in your back pocket is.
If you run cron less often then it will take longer to run. The forum notifications job can take a long time to complete if you have a lot of activity. If you run this more frequently then you have fewer messages to send each run. If you run it only once a day then you have to send every forum message for that day.
Generally it should never be necessary to interrupt cron. Doing so could mean that a job does not complete. In the case of forum notifications this would mean that some users do not receive notifications about new forum posts. The scheduled task system has timeouts in place to cull tasks which are taking longer than expected. Some jobs just take a long time. However this should not matter - it shouldn't generally affect your end-user performance.
Hope that this tome is of some assistance,
Andrew