finally, I have found that it is ovs bug.
when reboot vm, libvirt will call ovs-vsctl del-port, 
this cmd will cause other port's tc ingress rule automatically remove.

http://openvswitch.org/pipermail/discuss/2015-July/018318.html
I have reported a bug for ovs, and they have admitted it.

anyway, thank you for your reply.
At 2015-08-03 15:34:11, "Michal Privoznik" <mprivozn@redhat.com> wrote:
>On 20.07.2015 10:43, ychen wrote:
>> hi:
>> when I use openstack devstack to test QOS, wired phenomenon appeared, 
>> I set qos ingress rule in tapB, but when I reboot tapA, the ingress rule of tapB automatically removed, but the egress rule is still exist.
>> Test enviroment:
>> Linux: ubuntu 14.04.1 LTS
>> kernel: 3.13.0-32-generic
>> libvirt: 1.2.2
>> openstack: havana
>> 
>> 
>> 1. use nova to create vm A and vm B. for the configuration of the libvirt xml, see the last paragraph in the end.
>> 2. use tc cmd to create qos rule for vm A and vm B
>>    tc qdisc add dev tap3d0d2c4a-0b ingress  //vmA
>>    tc qdisc add dev tap896d5066-69 ingress //vmB
>> 
>> 
>> 3. then use cmd 
>>   "sudo virsh destory 142a08db-6e25-4a03-be13-7073104b0745 "  to first shutdown vm1
>>   then I see ingress rule of vmB disappeared :(     
>> 
>
>Interesting. With the latest libvirt I am unable to reproduce - there's
>a check and QoS is cleared out only if set in domain XML. Since your
>domain XML lacks it, I guess it's either already fixed or not libvirt fault.
>
>Michal