plugin.program.autowidget
plugin.program.autowidget copied to clipboard
[Bug] AutoWidget makes Kodi very laggy (due to fs task queue)
Hi @drinfernoo,
After using AutoWidget, I found Kodi UI is very laggy, and I have only 1 widget from AutoWidget. I understand during refresh, it may be laggy, but don't understand why it's laggy all the time. So I did a profiling for the addon and got the following:
From the log we can see, the next_cache_queue method was invoked for each second! Is that really necessary? especially during the idle time (not refreshing time) of the addon? I kind of think this is a programming error.
2022-05-26 01:41:19.019 T:12116 DEBUG
: Auto Widget: Called next_cache_queue 2022-05-26 01:41:19.019 T:12116 DEBUG : Auto Widget: Called iter_queue 2022-05-26 01:41:19.020 T:12116 DEBUG : Auto Widget: Called 2022-05-26 01:41:19.020 T:12116 DEBUG : Auto Widget: Argument .0 is <list_iterator object at 0x0000029B862AE1C0> 2022-05-26 01:41:19.020 T:12116 DEBUG : Auto Widget: Called tick 2022-05-26 01:41:19.020 T:12116 DEBUG : Auto Widget: Argument self is <resources.lib.refresh.RefreshService object at 0x0000029B85F894A0> 2022-05-26 01:41:19.020 T:12116 DEBUG : Auto Widget: Argument step is 1 2022-05-26 01:41:19.020 T:12116 DEBUG : Auto Widget: Argument max is 900 2022-05-26 01:41:19.020 T:12116 DEBUG : Auto Widget: Argument abort_check is <function RefreshService. at 0x0000029B86CA8C10> 2022-05-26 01:41:19.020 T:12116 DEBUG : Auto Widget: Called 2022-05-26 01:41:20.021 T:12116 DEBUG : Auto Widget: Called next_cache_queue 2022-05-26 01:41:20.021 T:12116 DEBUG : Auto Widget: Called iter_queue 2022-05-26 01:41:20.022 T:12116 DEBUG : Auto Widget: Called 2022-05-26 01:41:20.022 T:12116 DEBUG : Auto Widget: Argument .0 is <list_iterator object at 0x0000029B862AE1C0> 2022-05-26 01:41:20.022 T:12116 DEBUG : Auto Widget: Called tick 2022-05-26 01:41:20.022 T:12116 DEBUG : Auto Widget: Argument self is <resources.lib.refresh.RefreshService object at 0x0000029B85F894A0> 2022-05-26 01:41:20.023 T:12116 DEBUG : Auto Widget: Argument step is 1 2022-05-26 01:41:20.023 T:12116 DEBUG : Auto Widget: Argument max is 900 2022-05-26 01:41:20.023 T:12116 DEBUG : Auto Widget: Argument abort_check is <function RefreshService. at 0x0000029B86CA8C10> 2022-05-26 01:41:20.023 T:12116 DEBUG : Auto Widget: Called 2022-05-26 01:41:21.023 T:12116 DEBUG : Auto Widget: Called next_cache_queue 2022-05-26 01:41:21.023 T:12116 DEBUG : Auto Widget: Called iter_queue 2022-05-26 01:41:21.026 T:12116 DEBUG : Auto Widget: Called 2022-05-26 01:41:21.026 T:12116 DEBUG : Auto Widget: Argument .0 is <list_iterator object at 0x0000029B862AE1C0> 2022-05-26 01:41:21.026 T:12116 DEBUG : Auto Widget: Called tick 2022-05-26 01:41:21.026 T:12116 DEBUG : Auto Widget: Argument self is <resources.lib.refresh.RefreshService object at 0x0000029B85F894A0> 2022-05-26 01:41:21.026 T:12116 DEBUG : Auto Widget: Argument step is 1 2022-05-26 01:41:21.026 T:12116 DEBUG : Auto Widget: Argument max is 900 2022-05-26 01:41:21.026 T:12116 DEBUG : Auto Widget: Argument abort_check is <function RefreshService. at 0x0000029B86CA8C10> 2022-05-26 01:41:21.026 T:12116 DEBUG : Auto Widget: Called 2022-05-26 01:41:22.027 T:12116 DEBUG : Auto Widget: Called next_cache_queue 2022-05-26 01:41:22.027 T:12116 DEBUG : Auto Widget: Called iter_queue 2022-05-26 01:41:22.028 T:12116 DEBUG : Auto Widget: Called 2022-05-26 01:41:22.028 T:12116 DEBUG : Auto Widget: Argument .0 is <list_iterator object at 0x0000029B862AE1C0> 2022-05-26 01:41:22.028 T:12116 DEBUG : Auto Widget: Called tick 2022-05-26 01:41:22.028 T:12116 DEBUG : Auto Widget: Argument self is <resources.lib.refresh.RefreshService object at 0x0000029B85F894A0> 2022-05-26 01:41:22.028 T:12116 DEBUG : Auto Widget: Argument step is 1 2022-05-26 01:41:22.029 T:12116 DEBUG : Auto Widget: Argument max is 900 2022-05-26 01:41:22.029 T:12116 DEBUG : Auto Widget: Argument abort_check is <function RefreshService. at 0x0000029B86CA8C10> 2022-05-26 01:41:22.029 T:12116 DEBUG : Auto Widget: Called 2022-05-26 01:41:23.029 T:12116 DEBUG : Auto Widget: Called next_cache_queue 2022-05-26 01:41:23.029 T:12116 DEBUG : Auto Widget: Called iter_queue 2022-05-26 01:41:23.032 T:12116 DEBUG : Auto Widget: Called 2022-05-26 01:41:23.032 T:12116 DEBUG : Auto Widget: Argument .0 is <list_iterator object at 0x0000029B862AE1C0> 2022-05-26 01:41:23.032 T:12116 DEBUG : Auto Widget: Called tick 2022-05-26 01:41:23.032 T:12116 DEBUG : Auto Widget: Argument self is <resources.lib.refresh.RefreshService object at 0x0000029B85F894A0> 2022-05-26 01:41:23.032 T:12116 DEBUG : Auto Widget: Argument step is 1 2022-05-26 01:41:23.032 T:12116 DEBUG : Auto Widget: Argument max is 900 2022-05-26 01:41:23.032 T:12116 DEBUG : Auto Widget: Argument abort_check is <function RefreshService. at 0x0000029B86CA8C10> 2022-05-26 01:41:23.032 T:12116 DEBUG : Auto Widget: Called 2022-05-26 01:41:24.033 T:12116 DEBUG : Auto Widget: Called next_cache_queue 2022-05-26 01:41:24.033 T:12116 DEBUG : Auto Widget: Called iter_queue 2022-05-26 01:41:24.034 T:12116 DEBUG : Auto Widget: Called 2022-05-26 01:41:24.034 T:12116 DEBUG : Auto Widget: Argument .0 is <list_iterator object at 0x0000029B862AE1C0> 2022-05-26 01:41:24.034 T:12116 DEBUG : Auto Widget: Called tick 2022-05-26 01:41:24.034 T:12116 DEBUG : Auto Widget: Argument self is <resources.lib.refresh.RefreshService object at 0x0000029B85F894A0> 2022-05-26 01:41:24.035 T:12116 DEBUG : Auto Widget: Argument step is 1 2022-05-26 01:41:24.035 T:12116 DEBUG : Auto Widget: Argument max is 900 2022-05-26 01:41:24.035 T:12116 DEBUG : Auto Widget: Argument abort_check is <function RefreshService. at 0x0000029B86CA8C10> 2022-05-26 01:41:24.035 T:12116 DEBUG : Auto Widget: Called 2022-05-26 01:41:25.035 T:12116 DEBUG : Auto Widget: Called next_cache_queue 2022-05-26 01:41:25.036 T:12116 DEBUG : Auto Widget: Called iter_queue 2022-05-26 01:41:25.036 T:12116 DEBUG : Auto Widget: Called 2022-05-26 01:41:25.036 T:12116 DEBUG : Auto Widget: Argument .0 is <list_iterator object at 0x0000029B862AE1C0> 2022-05-26 01:41:25.037 T:12116 DEBUG : Auto Widget: Called tick 2022-05-26 01:41:25.037 T:12116 DEBUG : Auto Widget: Argument self is <resources.lib.refresh.RefreshService object at 0x0000029B85F894A0> 2022-05-26 01:41:25.037 T:12116 DEBUG : Auto Widget: Argument step is 1 2022-05-26 01:41:25.037 T:12116 DEBUG : Auto Widget: Argument max is 900 2022-05-26 01:41:25.037 T:12116 DEBUG : Auto Widget: Argument abort_check is <function RefreshService. at 0x0000029B86CA8C10> 2022-05-26 01:41:25.037 T:12116 DEBUG : Auto Widget: Called 2022-05-26 01:41:26.038 T:12116 DEBUG : Auto Widget: Called next_cache_queue
yeah it should be changed to use watchdog
actually replacing the queue files with a notifyAll call is a much better idea now I know it exists.
@Hawkedon Can you try the 3.7.0 release? This should be fixed now.