oref0
oref0 copied to clipboard
starting node takes too long on rpi zero.
This issue is used to describe the work that I'm doing to understand why the pi-zero is so slow to respond.
Looking at a js function of ns-status. This function is very simple for computation perspective (That is no loops or anything alike). Still in practice it takes between 15 to 20 seconds. I have stopped all openaps jobs and looked where the time is being spent: It seems that loading node takes 14 seconds. (found by running time node -e"") furthermore - running two nodes together takes 28 seconds, running 3 of them takes 43 seconds.
Looking at top, shows that operation is CPU intensive.
So, how many nodes do we run in 20 minutes? Looking at what was done from 03:00 to 03:20 node was started 50 times, which takes 700 (50 * 14) seconds out of 1200, or 60% of the cpu.
By the way, a rpi 3 runs node in 2.5 seconds, and can probably run 4 of them in parallel on different cores, so it is not affected.
So far for problem high level description.
Possible solutions that I can think of:
-
Run on something faster. (did not seem feasible from what I have looked for, and probably requires an enormous amount of testing and integration).
-
Write in another language (again seems like an enormous amount of work).
-
Decrease the time that it takes to load node. (probably possible, but I did not find how).
-
Run js using other engine then node.
-
run node ones and send it the work to be done. This is probably the way node was meant to run.
I'm continuing with #5, but will be happy to hear other people advices about ways to improve.
Something I've meant to experiment with for a couple years now is creating a stateless Node.js demon that listens to a local socket connection, which allows invoking some of the code we've implemented as Javascript using IPC calls from Bash, which would completely eliminate the Node startup time from the time to execute each of these. I'll try to find the time to make a proof of concept for this to see if this would work. Of note, Scott has been pointing out the current code is very much not implemented with the assumption that an instance of the code might be executed multiple times, so if we go this route, we need to be very careful around how to retain the statelessness of the code so multiple invocations of the same instance do not affect the outcomes of the runs.
I have just implemented such a server for the ns-status code. It finishes its work in less than a second.
Indeed there are global variables there that make the change a little bit harder than it should be. Is this problem only with determine basal or is it a global one?
I guess that we will still need to decide on things like are we having it single threaded, or do we want to open a thread per request. How will we do a watchdog for it (restarting it when needed)?
But let's wait for Scott input.
Can you share the code somewhere? I think there's quite a lot of places across the board that need changing if we go with this approach, where the current system just require()s code to create an instance that'll persist data, which need to be checked that they don't use any globals and allow creating new instances for each invoke. Good news is that any of these changes are likely to improve the overall quality of the code. :)
The client code is here: echo monitor/clock-zoned.json monitor/iob.json enact/suggested.json enact/enacted.json monitor/battery.json monitor/reservoir.json monitor/status.json monitor/mmtune.json preferences.json monitor/edison-battery.json | netcat 127.0.0.1 1337
The server code is attached. Please note that this is only a proof of concept not meant for production code (I only added more global variables, not removed them).
(Just out of curiosity, have you tested the startup time of different Node versions? I recall some recent major release implied Node no starts faster, so would be interesting to know the startup speed across Node 8 / 10 / 12)
By the way, the histogram of the different functions that we run is this:
12 /usr/local/bin/json
5 /usr/local/bin/ns-status
2 /usr/local/bin/oref0-calculate-iob
2 /usr/local/bin/oref0-detect-sensitivity
2 /usr/local/bin/oref0-determine-basal
6 /usr/local/bin/oref0-get-ns-entries
6 /usr/local/bin/oref0-get-profile
7 /usr/local/bin/oref0-meal
6 /usr/local/bin/oref0-normalize-temps
so, we can start with the easy ones, and continue from there (for example determine bassal, is called very little, and probably we can do without it).
I have tested with node v10.15.2 (our default). I'll not be available for the next 24 hours, but I can try to test other versions tomorrow.
(I was actually thinking of using Unix sockets rather than a networking socket, which should be lighter weight than binding to the local IP)
So - @tzachi-dar can you refactor that test so that instead of just changing the one file, do the least changes possible on the ns-status script so it can be invoked in a backward compatible manner, but also through a demon (and have a daemon script that requires that file)? That'd give us a bit better understanding of how complex it'd be to implement the refactor
Coming from #1342, this is exactly the numbers I have found and the problem I stumbled onto. A dry run of node
takes 14 seconds, not even thinking about underclocking. This has some unfortunate consequences both on responsiveness and battery time.
The calls to date
are the silliest ones I found, but all the oref0-meal
and so on are indeed very unnecessarily costly.
- Decrease the time that it takes to load node. (probably possible, but I did not find how).
I thought setting NODE_ENV=production
would help a lot, but it doesn't. So I did not find any way either.
- run node ones and send it the work to be done. This is probably the way node was meant to run.
Looks like a lot of changes, but definitely the way to go imo :+1:
Ok, so I did some more work on this issue.
I have fixed the ns-status file to be ready to be called from a different module. Changes are minimal. (we obviously need to replace the order of the functions there, but I wanted to make the diff minimal).
Code can be found at: https://github.com/tzachi-dar/oref0/tree/tzachi-node-example
I have also created a demo server using a unix socket to send and receive data. (still at very initial stage).
In order to use it the client can simply run: echo ns-status aa bb |socat - UNIX-CONNECT:/tmp/unixSocket
So, again changes here are minimal from the client side.
I still need to change the client to read the json files not using require (require will only read the data once).
One more thing to note is that testing of this feature can be very thorough: We can capture the node calls as they are today, copy the params, and then run against them.
And I would like to emphasize again: We don't have to run this on all functions. Some of our functions are very complicated (for example determine-bassel). But we have many that are simple, and are trivial to be converted. Converting the trivial ones will allow the pi to work much better as a lot of cpu will be freed.
Any feedback is welcomed.
Sounds like a good approach. I agree we should stick to migrating the things that are easiest to convert and test, and that run the most frequently.
OK, so I'll prepare a pr for 12 /usr/local/bin/json 5 /usr/local/bin/ns-status
and we will see how we continue from here.
Here is a short and optimistic update about the progress:
I have implemented the following modules on the shared node:
oref0-calculate-iob oref0-meal oref0-get-profile oref0-get-ns-entries
Comparing two runs of two nights on the same time, between 02:00 am to 08:59 the old code has completed 66 loops (or a loop every 6.3 minutes).
The new code has completed 81 loops, or a loop every 5.2 minutes. Reading the raw data, it also seems that with the old code there have been 9 times where a loop was not completed in 10 minutes (biggest time without loop is 17 minutes). In the new code this only happened once (for 10.5 minutes)
Another interesting advantage of the new code is that CPU is not always 100%. This helped to decrease the battery consumption by 30%:
As one can see in the attached pictures, with the new code, 850 mah were needed to power the pi for 6:50 minutes (=> 124 ma). On the old code, 1376 mah were needed to power the pi for 8:33 hours (=> 161 ma)
Here is the raw data: grep -e 'Completed oref0-pu|reason' /var/log/openaps/openaps-date.log -i| grep '11 Mar 2020 0[2-8]' | wc -l 66 root@oapsad5:/home/pi# grep -e 'Completed oref0-pu|reason' /var/log/openaps/openaps-date.log.1 -i| grep '10 Mar 2020 0[2-8]' | wc -l 81
grep -e 'Completed oref0-pu|reason' /var/log/openaps/openaps-date.log -i| grep '11 Mar 2020 0[2-8]' 2020-03-11 02:05:17 openaps.pump-loop Completed oref0-pump-loop at Wed 11 Mar 2020 02:05:17 AM IST 2020-03-11 02:10:39 openaps.pump-loop Completed oref0-pump-loop at Wed 11 Mar 2020 02:10:39 AM IST 2020-03-11 02:23:34 openaps.pump-loop Completed oref0-pump-loop at Wed 11 Mar 2020 02:23:34 AM IST 2020-03-11 02:27:25 openaps.pump-loop Completed oref0-pump-loop at Wed 11 Mar 2020 02:27:25 AM IST 2020-03-11 02:33:31 openaps.pump-loop Completed oref0-pump-loop at Wed 11 Mar 2020 02:33:31 AM IST 2020-03-11 02:39:49 openaps.pump-loop Completed oref0-pump-loop at Wed 11 Mar 2020 02:39:49 AM IST 2020-03-11 02:44:00 openaps.pump-loop Completed oref0-pump-loop at Wed 11 Mar 2020 02:43:59 AM IST 2020-03-11 02:51:33 openaps.pump-loop Completed oref0-pump-loop at Wed 11 Mar 2020 02:51:33 AM IST 2020-03-11 02:54:35 openaps.pump-loop Completed oref0-pump-loop at Wed 11 Mar 2020 02:54:35 AM IST 2020-03-11 02:57:44 openaps.pump-loop Completed oref0-pump-loop at Wed 11 Mar 2020 02:57:44 AM IST 2020-03-11 03:04:38 openaps.pump-loop Completed oref0-pump-loop at Wed 11 Mar 2020 03:04:38 AM IST 2020-03-11 03:11:31 openaps.pump-loop Completed oref0-pump-loop at Wed 11 Mar 2020 03:11:30 AM IST 2020-03-11 03:16:30 openaps.pump-loop Completed oref0-pump-loop at Wed 11 Mar 2020 03:16:30 AM IST 2020-03-11 03:23:42 openaps.pump-loop Completed oref0-pump-loop at Wed 11 Mar 2020 03:23:42 AM IST 2020-03-11 03:34:48 openaps.pump-loop Completed oref0-pump-loop at Wed 11 Mar 2020 03:34:48 AM IST 2020-03-11 03:45:37 openaps.pump-loop Completed oref0-pump-loop at Wed 11 Mar 2020 03:45:37 AM IST 2020-03-11 03:49:34 openaps.pump-loop Completed oref0-pump-loop at Wed 11 Mar 2020 03:49:34 AM IST 2020-03-11 03:53:35 openaps.pump-loop Completed oref0-pump-loop at Wed 11 Mar 2020 03:53:35 AM IST 2020-03-11 04:01:41 openaps.pump-loop Completed oref0-pump-loop at Wed 11 Mar 2020 04:01:41 AM IST 2020-03-11 04:11:54 openaps.pump-loop Completed oref0-pump-loop at Wed 11 Mar 2020 04:11:54 AM IST 2020-03-11 04:20:29 openaps.pump-loop Completed oref0-pump-loop at Wed 11 Mar 2020 04:20:29 AM IST 2020-03-11 04:25:01 openaps.pump-loop Completed oref0-pump-loop at Wed 11 Mar 2020 04:25:01 AM IST 2020-03-11 04:28:22 openaps.pump-loop Completed oref0-pump-loop at Wed 11 Mar 2020 04:28:22 AM IST 2020-03-11 04:38:34 openaps.pump-loop Completed oref0-pump-loop at Wed 11 Mar 2020 04:38:34 AM IST 2020-03-11 04:55:04 openaps.pump-loop Completed oref0-pump-loop at Wed 11 Mar 2020 04:55:04 AM IST 2020-03-11 05:02:56 openaps.pump-loop Completed oref0-pump-loop at Wed 11 Mar 2020 05:02:56 AM IST 2020-03-11 05:06:31 openaps.pump-loop Completed oref0-pump-loop at Wed 11 Mar 2020 05:06:30 AM IST 2020-03-11 05:10:39 openaps.pump-loop Completed oref0-pump-loop at Wed 11 Mar 2020 05:10:39 AM IST 2020-03-11 05:20:00 openaps.pump-loop Completed oref0-pump-loop at Wed 11 Mar 2020 05:20:00 AM IST 2020-03-11 05:23:33 openaps.pump-loop Completed oref0-pump-loop at Wed 11 Mar 2020 05:23:33 AM IST 2020-03-11 05:26:57 openaps.pump-loop Completed oref0-pump-loop at Wed 11 Mar 2020 05:26:57 AM IST 2020-03-11 05:36:26 openaps.pump-loop Completed oref0-pump-loop at Wed 11 Mar 2020 05:36:26 AM IST 2020-03-11 05:40:47 openaps.pump-loop Completed oref0-pump-loop at Wed 11 Mar 2020 05:40:47 AM IST 2020-03-11 05:49:59 openaps.pump-loop Completed oref0-pump-loop at Wed 11 Mar 2020 05:49:59 AM IST 2020-03-11 05:52:50 openaps.pump-loop Completed oref0-pump-loop at Wed 11 Mar 2020 05:52:50 AM IST 2020-03-11 05:58:52 openaps.pump-loop Completed oref0-pump-loop at Wed 11 Mar 2020 05:58:52 AM IST 2020-03-11 06:02:36 openaps.pump-loop Completed oref0-pump-loop at Wed 11 Mar 2020 06:02:36 AM IST 2020-03-11 06:06:45 openaps.pump-loop Completed oref0-pump-loop at Wed 11 Mar 2020 06:06:45 AM IST 2020-03-11 06:21:36 openaps.pump-loop Completed oref0-pump-loop at Wed 11 Mar 2020 06:21:36 AM IST 2020-03-11 06:25:08 openaps.pump-loop Completed oref0-pump-loop at Wed 11 Mar 2020 06:25:08 AM IST 2020-03-11 06:29:26 openaps.pump-loop Completed oref0-pump-loop at Wed 11 Mar 2020 06:29:26 AM IST 2020-03-11 06:32:00 openaps.pump-loop Completed oref0-pump-loop at Wed 11 Mar 2020 06:32:00 AM IST 2020-03-11 06:39:30 openaps.pump-loop Completed oref0-pump-loop at Wed 11 Mar 2020 06:39:30 AM IST 2020-03-11 06:42:33 openaps.pump-loop Completed oref0-pump-loop at Wed 11 Mar 2020 06:42:33 AM IST 2020-03-11 06:50:50 openaps.pump-loop Completed oref0-pump-loop at Wed 11 Mar 2020 06:50:50 AM IST 2020-03-11 06:56:50 openaps.pump-loop Completed oref0-pump-loop at Wed 11 Mar 2020 06:56:50 AM IST 2020-03-11 07:03:11 openaps.pump-loop Completed oref0-pump-loop at Wed 11 Mar 2020 07:03:11 AM IST 2020-03-11 07:10:04 openaps.pump-loop Completed oref0-pump-loop at Wed 11 Mar 2020 07:10:04 AM IST 2020-03-11 07:12:33 openaps.pump-loop Completed oref0-pump-loop at Wed 11 Mar 2020 07:12:33 AM IST 2020-03-11 07:17:42 openaps.pump-loop Completed oref0-pump-loop at Wed 11 Mar 2020 07:17:42 AM IST 2020-03-11 07:24:44 openaps.pump-loop Completed oref0-pump-loop at Wed 11 Mar 2020 07:24:44 AM IST 2020-03-11 07:29:19 openaps.pump-loop Completed oref0-pump-loop at Wed 11 Mar 2020 07:29:19 AM IST 2020-03-11 07:34:42 openaps.pump-loop Completed oref0-pump-loop at Wed 11 Mar 2020 07:34:42 AM IST 2020-03-11 07:47:13 openaps.pump-loop Completed oref0-pump-loop at Wed 11 Mar 2020 07:47:13 AM IST 2020-03-11 07:54:16 openaps.pump-loop Completed oref0-pump-loop at Wed 11 Mar 2020 07:54:16 AM IST 2020-03-11 08:00:50 openaps.pump-loop Completed oref0-pump-loop at Wed 11 Mar 2020 08:00:50 AM IST 2020-03-11 08:03:45 openaps.pump-loop Completed oref0-pump-loop at Wed 11 Mar 2020 08:03:45 AM IST 2020-03-11 08:08:54 openaps.pump-loop Completed oref0-pump-loop at Wed 11 Mar 2020 08:08:54 AM IST 2020-03-11 08:12:31 openaps.pump-loop Completed oref0-pump-loop at Wed 11 Mar 2020 08:12:31 AM IST 2020-03-11 08:28:09 openaps.pump-loop Completed oref0-pump-loop at Wed 11 Mar 2020 08:28:09 AM IST 2020-03-11 08:31:27 openaps.pump-loop Completed oref0-pump-loop at Wed 11 Mar 2020 08:31:27 AM IST 2020-03-11 08:34:57 openaps.pump-loop Completed oref0-pump-loop at Wed 11 Mar 2020 08:34:57 AM IST 2020-03-11 08:42:50 openaps.pump-loop Completed oref0-pump-loop at Wed 11 Mar 2020 08:42:50 AM IST 2020-03-11 08:46:45 openaps.pump-loop Completed oref0-pump-loop at Wed 11 Mar 2020 08:46:45 AM IST 2020-03-11 08:53:37 openaps.pump-loop Completed oref0-pump-loop at Wed 11 Mar 2020 08:53:37 AM IST 2020-03-11 08:57:52 openaps.pump-loop Completed oref0-pump-loop at Wed 11 Mar 2020 08:57:52 AM IST root@oapsad5:/home/pi# grep -e 'Completed oref0-pu|reason' /var/log/openaps/openaps-date.log.1 -i| grep '10 Mar 2020 0[2-8]' 2020-03-10 02:01:04 openaps.pump-loop Completed oref0-pump-loop at Tue 10 Mar 2020 02:01:04 AM IST 2020-03-10 02:07:30 openaps.pump-loop Completed oref0-pump-loop at Tue 10 Mar 2020 02:07:30 AM IST 2020-03-10 02:11:28 openaps.pump-loop Completed oref0-pump-loop at Tue 10 Mar 2020 02:11:28 AM IST 2020-03-10 02:16:34 openaps.pump-loop Completed oref0-pump-loop at Tue 10 Mar 2020 02:16:34 AM IST 2020-03-10 02:21:55 openaps.pump-loop Completed oref0-pump-loop at Tue 10 Mar 2020 02:21:55 AM IST 2020-03-10 02:26:26 openaps.pump-loop Completed oref0-pump-loop at Tue 10 Mar 2020 02:26:26 AM IST 2020-03-10 02:31:32 openaps.pump-loop Completed oref0-pump-loop at Tue 10 Mar 2020 02:31:32 AM IST 2020-03-10 02:37:18 openaps.pump-loop Completed oref0-pump-loop at Tue 10 Mar 2020 02:37:18 AM IST 2020-03-10 02:41:14 openaps.pump-loop Completed oref0-pump-loop at Tue 10 Mar 2020 02:41:14 AM IST 2020-03-10 02:50:03 openaps.pump-loop Completed oref0-pump-loop at Tue 10 Mar 2020 02:50:03 AM IST 2020-03-10 02:51:04 openaps.pump-loop Completed oref0-pump-loop at Tue 10 Mar 2020 02:51:04 AM IST 2020-03-10 02:57:06 openaps.pump-loop Completed oref0-pump-loop at Tue 10 Mar 2020 02:57:06 AM IST 2020-03-10 03:01:57 openaps.pump-loop Completed oref0-pump-loop at Tue 10 Mar 2020 03:01:57 AM IST 2020-03-10 03:10:29 openaps.pump-loop Completed oref0-pump-loop at Tue 10 Mar 2020 03:10:29 AM IST 2020-03-10 03:12:07 openaps.pump-loop Completed oref0-pump-loop at Tue 10 Mar 2020 03:12:07 AM IST 2020-03-10 03:17:46 openaps.pump-loop Completed oref0-pump-loop at Tue 10 Mar 2020 03:17:46 AM IST 2020-03-10 03:22:55 openaps.pump-loop Completed oref0-pump-loop at Tue 10 Mar 2020 03:22:55 AM IST 2020-03-10 03:27:44 openaps.pump-loop Completed oref0-pump-loop at Tue 10 Mar 2020 03:27:44 AM IST 2020-03-10 03:32:23 openaps.pump-loop Completed oref0-pump-loop at Tue 10 Mar 2020 03:32:23 AM IST 2020-03-10 03:36:43 openaps.pump-loop Completed oref0-pump-loop at Tue 10 Mar 2020 03:36:43 AM IST 2020-03-10 03:43:34 openaps.pump-loop Completed oref0-pump-loop at Tue 10 Mar 2020 03:43:34 AM IST 2020-03-10 03:48:18 openaps.pump-loop Completed oref0-pump-loop at Tue 10 Mar 2020 03:48:18 AM IST 2020-03-10 03:51:54 openaps.pump-loop Completed oref0-pump-loop at Tue 10 Mar 2020 03:51:54 AM IST 2020-03-10 04:00:25 openaps.pump-loop Completed oref0-pump-loop at Tue 10 Mar 2020 04:00:25 AM IST 2020-03-10 04:03:24 openaps.pump-loop Completed oref0-pump-loop at Tue 10 Mar 2020 04:03:23 AM IST 2020-03-10 04:09:32 openaps.pump-loop Completed oref0-pump-loop at Tue 10 Mar 2020 04:09:32 AM IST 2020-03-10 04:11:43 openaps.pump-loop Completed oref0-pump-loop at Tue 10 Mar 2020 04:11:43 AM IST 2020-03-10 04:16:54 openaps.pump-loop Completed oref0-pump-loop at Tue 10 Mar 2020 04:16:54 AM IST 2020-03-10 04:22:36 openaps.pump-loop Completed oref0-pump-loop at Tue 10 Mar 2020 04:22:36 AM IST 2020-03-10 04:27:25 openaps.pump-loop Completed oref0-pump-loop at Tue 10 Mar 2020 04:27:24 AM IST 2020-03-10 04:32:16 openaps.pump-loop Completed oref0-pump-loop at Tue 10 Mar 2020 04:32:16 AM IST 2020-03-10 04:37:21 openaps.pump-loop Completed oref0-pump-loop at Tue 10 Mar 2020 04:37:20 AM IST 2020-03-10 04:46:32 openaps.pump-loop Completed oref0-pump-loop at Tue 10 Mar 2020 04:46:32 AM IST 2020-03-10 04:53:08 openaps.pump-loop Completed oref0-pump-loop at Tue 10 Mar 2020 04:53:08 AM IST 2020-03-10 04:59:22 openaps.pump-loop Completed oref0-pump-loop at Tue 10 Mar 2020 04:59:22 AM IST 2020-03-10 05:02:58 openaps.pump-loop Completed oref0-pump-loop at Tue 10 Mar 2020 05:02:58 AM IST 2020-03-10 05:08:39 openaps.pump-loop Completed oref0-pump-loop at Tue 10 Mar 2020 05:08:39 AM IST 2020-03-10 05:12:34 openaps.pump-loop Completed oref0-pump-loop at Tue 10 Mar 2020 05:12:34 AM IST 2020-03-10 05:18:19 openaps.pump-loop Completed oref0-pump-loop at Tue 10 Mar 2020 05:18:19 AM IST 2020-03-10 05:23:41 openaps.pump-loop Completed oref0-pump-loop at Tue 10 Mar 2020 05:23:41 AM IST 2020-03-10 05:27:27 openaps.pump-loop Completed oref0-pump-loop at Tue 10 Mar 2020 05:27:26 AM IST 2020-03-10 05:32:49 openaps.pump-loop Completed oref0-pump-loop at Tue 10 Mar 2020 05:32:49 AM IST 2020-03-10 05:38:42 openaps.pump-loop Completed oref0-pump-loop at Tue 10 Mar 2020 05:38:42 AM IST 2020-03-10 05:45:44 openaps.pump-loop Completed oref0-pump-loop at Tue 10 Mar 2020 05:45:44 AM IST 2020-03-10 05:47:58 openaps.pump-loop Completed oref0-pump-loop at Tue 10 Mar 2020 05:47:58 AM IST 2020-03-10 05:53:32 openaps.pump-loop Completed oref0-pump-loop at Tue 10 Mar 2020 05:53:32 AM IST 2020-03-10 05:59:24 openaps.pump-loop Completed oref0-pump-loop at Tue 10 Mar 2020 05:59:24 AM IST 2020-03-10 06:02:52 openaps.pump-loop Completed oref0-pump-loop at Tue 10 Mar 2020 06:02:52 AM IST 2020-03-10 06:07:56 openaps.pump-loop Completed oref0-pump-loop at Tue 10 Mar 2020 06:07:56 AM IST 2020-03-10 06:12:41 openaps.pump-loop Completed oref0-pump-loop at Tue 10 Mar 2020 06:12:41 AM IST 2020-03-10 06:17:55 openaps.pump-loop Completed oref0-pump-loop at Tue 10 Mar 2020 06:17:55 AM IST 2020-03-10 06:22:38 openaps.pump-loop Completed oref0-pump-loop at Tue 10 Mar 2020 06:22:38 AM IST 2020-03-10 06:28:46 openaps.pump-loop Completed oref0-pump-loop at Tue 10 Mar 2020 06:28:46 AM IST 2020-03-10 06:35:45 openaps.pump-loop Completed oref0-pump-loop at Tue 10 Mar 2020 06:35:45 AM IST 2020-03-10 06:38:56 openaps.pump-loop Completed oref0-pump-loop at Tue 10 Mar 2020 06:38:56 AM IST 2020-03-10 06:42:56 openaps.pump-loop Completed oref0-pump-loop at Tue 10 Mar 2020 06:42:56 AM IST 2020-03-10 06:48:30 openaps.pump-loop Completed oref0-pump-loop at Tue 10 Mar 2020 06:48:30 AM IST 2020-03-10 06:56:32 openaps.pump-loop Completed oref0-pump-loop at Tue 10 Mar 2020 06:56:32 AM IST 2020-03-10 06:57:52 openaps.pump-loop Completed oref0-pump-loop at Tue 10 Mar 2020 06:57:52 AM IST 2020-03-10 07:02:53 openaps.pump-loop Completed oref0-pump-loop at Tue 10 Mar 2020 07:02:53 AM IST 2020-03-10 07:08:20 openaps.pump-loop Completed oref0-pump-loop at Tue 10 Mar 2020 07:08:20 AM IST 2020-03-10 07:13:27 openaps.pump-loop Completed oref0-pump-loop at Tue 10 Mar 2020 07:13:27 AM IST 2020-03-10 07:18:38 openaps.pump-loop Completed oref0-pump-loop at Tue 10 Mar 2020 07:18:38 AM IST 2020-03-10 07:29:03 openaps.pump-loop Completed oref0-pump-loop at Tue 10 Mar 2020 07:29:03 AM IST 2020-03-10 07:33:12 openaps.pump-loop Completed oref0-pump-loop at Tue 10 Mar 2020 07:33:12 AM IST 2020-03-10 07:39:45 openaps.pump-loop Completed oref0-pump-loop at Tue 10 Mar 2020 07:39:45 AM IST 2020-03-10 07:42:37 openaps.pump-loop Completed oref0-pump-loop at Tue 10 Mar 2020 07:42:37 AM IST 2020-03-10 07:48:33 openaps.pump-loop Completed oref0-pump-loop at Tue 10 Mar 2020 07:48:33 AM IST 2020-03-10 07:53:26 openaps.pump-loop Completed oref0-pump-loop at Tue 10 Mar 2020 07:53:26 AM IST 2020-03-10 07:58:48 openaps.pump-loop Completed oref0-pump-loop at Tue 10 Mar 2020 07:58:47 AM IST 2020-03-10 08:02:20 openaps.pump-loop Completed oref0-pump-loop at Tue 10 Mar 2020 08:02:20 AM IST 2020-03-10 08:07:14 openaps.pump-loop Completed oref0-pump-loop at Tue 10 Mar 2020 08:07:14 AM IST 2020-03-10 08:12:46 openaps.pump-loop Completed oref0-pump-loop at Tue 10 Mar 2020 08:12:46 AM IST 2020-03-10 08:22:50 openaps.pump-loop Completed oref0-pump-loop at Tue 10 Mar 2020 08:22:50 AM IST 2020-03-10 08:31:18 openaps.pump-loop Completed oref0-pump-loop at Tue 10 Mar 2020 08:31:18 AM IST 2020-03-10 08:32:56 openaps.pump-loop Completed oref0-pump-loop at Tue 10 Mar 2020 08:32:56 AM IST 2020-03-10 08:37:48 openaps.pump-loop Completed oref0-pump-loop at Tue 10 Mar 2020 08:37:48 AM IST 2020-03-10 08:43:31 openaps.pump-loop Completed oref0-pump-loop at Tue 10 Mar 2020 08:43:31 AM IST 2020-03-10 08:51:13 openaps.pump-loop Completed oref0-pump-loop at Tue 10 Mar 2020 08:51:13 AM IST 2020-03-10 08:53:48 openaps.pump-loop Completed oref0-pump-loop at Tue 10 Mar 2020 08:53:48 AM IST 2020-03-10 08:59:35 openaps.pump-loop Completed oref0-pump-loop at Tue 10 Mar 2020 08:59:35 AM IST
Awesome! I believe this would help underclocked 500MHz pis a ton to reliably loop from morning to evening :)
I'm busy with COVID-19 stuff, but happy to merge things once y'all have tested them to your satisfaction.
I hope everything is OK scott.
I think that the first part is to merge https://github.com/openaps/oref0/pull/1361 After that it will be easier to review the next parts.
I'm doing my best to test the next part, but would still wait for a through review by you once you have time.
Yeah, we're doing great, and Washington State finally just today shut down all the schools and is finally doing enough social distancing to probably stop the epidemic from continuing to grow. Still lots to be done to build CoEpi.org and start being able to do automated contact tracing so we can lift the social distancing restrictions in a month or two, but I think we're finally Flattening the Curve enough to avoid becoming another Lombardy.
Commented on #1361: once we're happy enough with the test results I can merge it.
What’s the next step here? 1361 has been merged for months now. Have you done any further testing? Is there something specific that needs reviewed or tested by someone else?
I did all the testing I could do without testing this on a real person. I'm waiting for someone familiar with the code to review it so I can continue with the testing.
I cannot help with the testing anymore unfortunately
@tzachi-dar which PR needs review?
https://github.com/openaps/oref0/pull/1370
With #1361 and #1370 both merged, is this issue still outstanding? Is there anything that still needs to be tested? Are there any additional modules that need to be converted to use the shared instance of node?
The issue is almost fixed now, but I think that we need to convert also things like determinebasel to get it 100% done.