This document summarizes a presentation about Ceph performance given at CephDays Frankfurt 2014. It discusses the good aspects of Ceph's performance including its deterministic object placement strategy and ability to aggregate IOs at the cluster and OSD levels. It also examines the bad, including issues caused by journaling, having the journal and OSD data on the same disk, filesystem fragmentation over time, lack of parallelized reads, and the impact of scrubbing. The ugly is described as multiple objects mapping to the same physical disks, causing sequential streams to get mixed and the disks to seek frequently. The document concludes with suggestions on how to properly build a Ceph cluster and considerations like hardware, data growth planning, and failure tolerance.