The "memory usage" of a process is a controversial and subjective topic. There are many different views about what actually constitutes a proc's memory usage.
Currently, the zabbix code is using text size + data size + stack size for proc.mem (ki_tsize + ki_dsize + ki_ssize), whereas `top' and `ps' display resident size (ki_rssize) and VM size (ki_size). This is why the values from zabbix vs. top and ps are different. I would think that to eliminate confusion and to make the zabbix value more "verifiable," we should probably switch to using ki_rssize.
Thoughts? What are other OSes doing? I haven't dug into the linux code, for example.