The recent evolutionary trend of modern applications is towards a development paradigm that involves the composition of multiple interconnected micro-services devoted to perform specific functions. Such applications usually rely on data collected by geographically distributed sensors or by mobile users and are often characterized by strict requirements in terms of latency and response time. These requirements may be not compatible with the traditional cloud computing approach, where the computation occurring on far-away data centers cannot always guarantee the satisfaction of latency constraints. The fog computing approach has recently received a lot of attention as a promising solution in supporting time-critical applications. Due to an intermediate layer of fog nodes located close to sensors or final users and able to process the application data, indeed, the fog systems may significantly reduce the experienced response time. In a scenario where applications are composed by a chain of multiple micro-services, however, the service placement over the nodes of the fog infrastructure represents a nontrivial issue with respect to the cloud computing context. The highly distributed and heterogeneous nature of the fog nodes requires novel solutions taking into account the different performance of the fog nodes and the network delays caused by inter-nodes connectivity. This paper proposes a performance model for the placement of application micro-services over the fog infrastructure. To face the computational complexity of the optimization model, an heuristic based on a genetic A validated performance model for micro-services placement in Fog systems algorithm is proposed. Furthermore, the analytical model is validated by means of simulation. The performance of the proposed solution is evaluated under a wide set of scenario and parameters ranges, including a case study based on realistic micro-services characterized through a prototype implementation.