bradcfisher / OctoPrint-ExcludeRegionPlugin

OctoPrint plugin that adds the ability to prevent printing within rectangular or circular regions of the currently active gcode file.
GNU Affero General Public License v3.0
55 stars 5 forks source link

Slows down serial communication since Octoprint 1.3.12 #30

Closed cmock closed 5 years ago

cmock commented 5 years ago

Since upgrading to Octoprint 1.3.12, the plugin slows down serial communication so much that my printer stutters.

This is with no exclusion regions defined.

Turning off the plugin brings my setup back to stutter-free printing.

bradcfisher commented 5 years ago

@cmock Thanks for the report. I'm sorry to hear that you're encountering issues with the plugin. I haven't yet upgraded to 1.3.12 myself, but it looks like this will give me some incentive to do so. I'll give it a try and see if I can reproduce the issue.

bradcfisher commented 5 years ago

@cmock I have upgraded to 1.3.12 and ran some test prints with and without the plugin enabled, and have not experienced the issue you described. It may be helpful if you could provide some more details about your specific setup. For example:

cmock commented 5 years ago

I don't have access to the printer in question until next weekend, I'll provide gcode and info about logging configuration then.

The questions that I can answer now:

bradcfisher commented 5 years ago

Thanks for the feedback. It sounds like your configuration should perform reasonably similar to mine, especially as it's running on slightly more capable hardware.

Running Klipper is a big difference from my setup where I'm running Marlin. I don't think there should be much of an issue with that, though it's possible.

Are you using only standard GCode commands, or do you happen to use the extended Klipper commands? It may be possible that the way the exclude region plugin is parsing the commands is inefficient for those commands. Not sure if that's the case, but it's one thing that stands out between the two.

The other is that Klipper requires the Pi to do more of the processing of the Gcode that the printer control board would normally do, and would also utilize more RAM on the Pi. It may be worthwhile to look into things like I/O wait time and swap usage when the plugin is enabled. I do think it's unlikely it's swapping, but that would cause poor performance.

cmock commented 5 years ago

I have some extended gcode commands in the start section of my gcode, but the printing phase only consists of standard gcodes (generated by Cura 4.3.0).

Klipper uses only little CPU, and my impression from watching vmstat and top during test prints is that Octoprint often uses up a whole core, while klipper only takes a small fraction of another core.

But I'll give it a go next weekend, is there anything specific I should test or debug?

cmock commented 5 years ago

OK, now I'm embarrassed -- I had debug logging on for octoprint and the ExcludeRegion plugin, and setting that to INFO resolved the problem...

Sorry for bothering you and thanks for you help!

bradcfisher commented 5 years ago

Glad to hear it was a simple fix. It's not a bother, and it's actually good to know the plugin is being used. At the least, it gave me some incentive to upgrade my own Octoprint/OctoPi setup to get it a bit more up to date. :)