Joint optimization of edge server and virtual machine placement in edge computing environments