Modelin komut sayısını yarıya indirdik. Doğruluk değişmedi.
Auspex gerekenin neredeyse iki katı komut çalıştırıyordu. Basit bir bütçe sorunu çözdü.
Auspex bir arızayı teşhis ederken model ağda salt okunur komutlar çalıştırır: topolojiyi okur, VLAN'lara bakar, bir cihaza ping atar. Her komut zaman alır. Testlerde modelin gerekenden çok daha fazla komut çalıştırdığını gördük.
Sorun neydi
İlk tahminimiz bilgi eksikliğiydi. Belki model ağı anlamadığı için aramaya devam ediyordu. Bu yüzden ona baştan topolojinin haritasını verdik. Hiçbir şey değişmedi. Asıl sorun daha basitti: modelin ne zaman duracağına dair bir ölçüsü yoktu.
Çözüm
Modeli çalıştıran döngüye bir bütçe ekledik. İki eşiği var:
- 20 komutta modele kısa bir hatırlatma gider: en olası nedeni söyle. Kanıt yeterliyse bitir. Değilse tek bir çağrı daha yap.
- 35 komutta koşu durur.
Her eşik sadece bir kez devreye girer. İlk denemelerde hatırlatmayı tekrarlamak modeli yolundan çıkardı.
Sonuç
89 sınav sorusunda ölçtük. Model %48 daha az komut kullandı, tam olarak aynı sayıda arızayı çözdü ve artık hiçbir koşu sert sınıra dayanmadı. Değişiklik auspex-cli v0.3.3 ile yayına çıktı. Eski davranışa dönmek için AUSPEX_TOOL_BUDGET=0 ayarı yeterli.
Ders
Bir modeldeki her sorun daha fazla eğitim gerektirmez. Bazen çözüm, modelin etrafındaki programdadır. Küçük bir kural işin yarısını kurtardı ve doğruluktan hiçbir şey götürmedi.