Application layer scheduling in cloud: ?fundamentals, review and research directions