Hey There,
For vmstat's freemem, you're getting the result in kb, but "sar -r" shows you pages, so you need to do the amount x pagesize (in k), which you can get from the "pagesize" command (although it doesn't display in k so you have calculate 8192 = 8k or whatever it is on your system).
So your vmstat free is
2886480
and sar -r free is
178591 x pagesize (usually 8192 / 8k)
for 1428728
Since the sar output is giving you output roughly have of the vmstat freemem size, I'd guess either the pagesize is larger or the freemem is being reported in blocks:
1428728 x 2 = 2857456
And we're equal. If you can post some diags from the machine (pagesize, what your sar outputs in, etc) that might help to clarify, but I think you should be okay and both are the same (just the "why" of the difference is unclear)
Hope that helps :)
, Mike