G64
From PROBOTIX :: wiki
Except for in the case of full 90 degree arcs, CAM software will break any curves in your designs up into a bunch of tiny segments. This will create jittery motion, will create tool marks in the part, shorten your tool life, and can extend the cut times significantly. Fortunately, LinuxCNC has a mode called G64 path optimization.
When G64 is turned on, LinuxCNC will perform a look-ahead and calculates the angle of the next segment(s), only slowing down as little as possible to round the corner(s). It tries to maintain the programmed velocity as close as possible, while not violating the velocity and acceleration capabilities of the machine. If G64 is programmed without a P parameter, LinuxCNC will take its liberty and round over those corners as much as it needs, the faster the feedrate, the greater the deviation from the programmed location. While cutting a square at only 10IPM will be a near perfect square, cutting that same square at 100IPM will result in 3 extremely rounded corners. In LinuxCNC, G64 is turned on by default (look for it under active g-codes under the MDI tab), but it does not have this P parameter (tolerance) by default.
The simple solution is to type G64 P0.010 into the MDI command box and hit go. This will tell LinuxCNC to yes, turn on path optimization, but do not deviate more than 0.010" from where I told you to go. The tolerance you use will depend upon the types of parts you are making. You will want to set it to 0.010 or more for decorative type things, especially while 3D carving. For more precise parts, You will use 0.001. G61 cancels G64 and will cause the machine to come to a complete stop at the end of every segment.
One more thing... You can put that G64 line in the preamble of your post processor so that it inserts it into every g-code file. It is modal, so it stays the same unless explicitly changed with another G64 Pxxx, or canceled with a G61. It also resets when the software is restarted. The most efficient way to manage this is to create seperate post processor for each tolerance level you want to use.
For more information, read this: http://wiki.linuxcnc.org/cgi-bin/wiki.pl?TrajectoryControl
For help with your post processor, start here: What_is_a_post_processor?