You really want G64
http://linuxcnc.org/docs/html/gcode/...html#gcode:g64

The default behavior of G64 is go as fast as you can (up to the specified feedrate) while touching every gcode segment. If the lines are so short that they cannot be processed through 1 servo cycle - you start to get slow downs.

You really should get in the habit of specifying a G64 tolerance. If you don't you will get some pretty rounded corners as the default setting is go as fast as you can.

P - motion blending tolerance (how far away from the programmed path you deviate. P.005 says - go as fast as you can but stay within .005 of programmed path.

Q - naive cam tolerance - combine segments that are colinear with the Q amount. <- this will help your problem - it will combine segments that deviate within the Q amount.

G64 - best possible speed.

G64 P- <Q- > blending with tolerance.

On your programs I would try just a little Q - say G64P.005Q.001 (these are in inches - sorry)