Distributed controller design and performance optimization for discrete-time linear systems