Καλώς ορίσατε στο dotNETZone.gr - Σύνδεση | Εγγραφή | Βοήθεια
σε

 

Αρχική σελίδα Ιστολόγια Συζητήσεις Εκθέσεις Φωτογραφιών Αρχειοθήκες

Προβλημα silverlight , 100% cpu usage on RequestDeviceAccess

Îåêßíçóå áðü ôï ìÝëïò nikosmantis. Τελευταία δημοσίευση από το μέλος Decad στις 03-05-2011, 23:16. Υπάρχουν 6 απαντήσεις.
Ταξινόμηση Δημοσιεύσεων: Προηγούμενο Επόμενο
  •  30-04-2011, 03:20 65432

    Προβλημα silverlight , 100% cpu usage on RequestDeviceAccess

    Aντιμετωπιζουμε ενα σοβαρο προβλημα, ο κωδικας που χρησιμοποιειται ειναι ο παρακατω. Το προβλημα παρατηρειται κατα τη στιγμη access του silverlight application στην καρτα ηχου. Η χρηση cpu αυξανει και αυτο το προβλημα παρατηρειται σε ολους τους broswer.  Eαν αφησουμε το siliverlight popup με το dialog για το confirmation του access στη καρτα η στη καμερα, μετα απο λιγο το silverlight γινεται crash απο τον φυλομετρητη.

    Aυτο το προβλημα παρατηρειται ακομα κι αν η εφαρμογη τρεξει εκτος broswer, με τη χρηση του slllauncher.exe. Χρησιμοποιουμε sl4, visual studio 2010 και το ιδιο παρατηρειται με ολους τους broswer IE,FF4,FF3.5,Chrome. To προβλημα ειναι ακομα πιο σοβαρο σε παλιοτερης τεχνολογιας υπολογιστες με windows xp. και συνηθως αυτο που παρατηρειται ειναι το pc να παγωνει και να χρειαζεται restart.

    ακολουθει ο κωδικας και ενα screenshot οπου βλεπετε ξεκαθαρα το προβλημα.

    private void StartStopRecBtn_Click(object sender, RoutedEventArgs e)
            {
                if (!recordingStatus)
                {
                    ReadOnlyCollection<AudioCaptureDevice> devices = CaptureDeviceConfiguration.GetAvailableAudioCaptureDevices();
                    if (devices.Count == 0)
                        return;
     
                    if (!CaptureDeviceConfiguration.AllowedDeviceAccess)
                    {
                        CaptureDeviceConfiguration.RequestDeviceAccess();
     
                    }
                        if (CaptureDeviceConfiguration.AllowedDeviceAccess)
                        {
                            recImg.Source = new BitmapImage(new Uri("Images/StopRecording.jpg", UriKind.RelativeOrAbsolute));
                            if (audioSink == null)
                            {
                                capture = new CaptureSource();
                                capture.AudioCaptureDevice = CaptureDeviceConfiguration.GetDefaultAudioCaptureDevice();
                                capture.VideoCaptureDevice = null;
                                audioSink = new MemoryStreamAudioSink();
                                audioSink.CaptureSource = capture;
                            }
                            else
                            {
     
                                audioSink.CaptureSource.Stop();
                                audioSink = null;
                            }
     
                                try
                                {
     
                                    if (audioSink != null)
                                        audioSink.CaptureSource.Start();
                                    else
                                        StatusText.Text = "Not ready to Record..";
                                }
                                catch (InvalidOperationException ex)
                                {
                                    MessageBox.Show("There was a problem starting the webcam " +
                                                    "If using a Mac, verify default device settings." +
                                                    "Right click app to access the Configuration settings." + ex.Message + " " + ex.InnerException);
                                }
     
                            Thread.Sleep(TimeSpan.FromSeconds(0.5));
                            recordingStatus = true;
                        }
                    }
                else
                {
                    recordingStatus = false;
                    StatusText.Text = "Ready to Record..";
                    recImg.Source = new BitmapImage(new Uri("Images/StartRecording.jpg", UriKind.RelativeOrAbsolute));
                    audioSink.CaptureSource.Stop();
                    
                }
            }


  •  01-05-2011, 21:30 65466 σε απάντηση της 65432

    Απ: Προβλημα silverlight , 100% cpu usage on RequestDeviceAccess

    Κατ' αρχήν, πώς προκύπτει το 100%; Στο screenshot βλέπω 46% και στις δικές μου δοκιμές ήταν από 38% ως 48%.

    Όπως και να έχει, δεν βρίσκεται στο RequestDeviceAccess το πρόβλημα. Το ίδιο CPU utilization θα δεις και όταν κάνεις ένα απλό Clipboard.SetText("a") σε μια νέα εφαρμογή χωρίς άλλον κώδικα.

    Ενδεχομένως να κάνει κάτι άλλο παράλληλα η εφαρμογή και όταν έρχεται το user concent dialog να δημιουργείται το πρόβλημα (μιας και αυτά τα dialogs είναι blocking στο UI thread).

     


    Vir prudens non contra ventum mingit
  •  02-05-2011, 12:15 65513 σε απάντηση της 65466

    Απ: Προβλημα silverlight , 100% cpu usage on RequestDeviceAccess

    Πως προκυπτει το 100% ? αμα ειναι single core το cpu θα δεις 100% ? 1 Τhread ειναι δεν μπορει να παει 100% σε dual core και το screenshot ειναι απο dual core.
    Η εφαρμογη δεν κανει τιποτα αλλο παραλληλα.
    Το προβλημα ειναι πιο εντονο σε μηχανηματα με μονοπυρηνους. Μπορεις να το δεις σε ενα virtual machine με single core.
    Δοκιμασε να το αφησεις χωρις να απαντησεις στο dialogbox για 5-10 sec να δεις οτι αρχικα παγωνει και υστερα κρασαρει ο plugin-container.exe στον firefox.(τα ιδια κ σε chrome, ie..)
    Οπως και να εχει δεν ειναι σωστη η συμπεριφορα αυτη, μπορεις να δεις καμερα απο flash οταν βγαζει το popup δεν σηκωνει ουτε 1% cpu.
    Γιατι να σηκωσει δλδ το dialogbox cpu..

    Οποιος βαριετε να το κανει compile, μπορει να το δει εδω.
    http://pastehtml.com/view/1ebvxci.html
    http://www.silverlight.net/learn/quickstarts/webcams/ 
  •  02-05-2011, 12:47 65516 σε απάντηση της 65513

    Απ: Προβλημα silverlight , 100% cpu usage on RequestDeviceAccess

    Όπως είπα, έκανα τις δοκιμές μου πριν απαντήσω. Και σε IE και σε FF δεν κρασάρει και μάλιστα το CPU παίζει ανάλογα με το πόσο busy είναι το PC. Όταν έκανα παράλληλα κι άλλα πράγματα (είχα ανοίξει και έτρεχα δεύτερο instance του VS και έγραφα σε άλλο project) έβλεπα να πέφτει ακόμα και στο 8% το utilization του affirmation dialog. Μάλιστα είχα αφήσει και τον IE και τον FF ανοιχτούς στο affirmation dialog για ώρα και τίποτα δεν συνέβη, ίσα-ίσα που ο FF έπεσε στο 2% όσο περίμενε.

    Προτείνω να δοκιμάσεις σε ένα καθαρό PC. Μπορεί να φταίει κανένα add-in, κανένα άλλο πρόγραμμα που κάνει monitor τους browsers (πχ password managers, download managers, κλπ). Σε όσα PC είχα στη διάθεσή μου και το δοκίμασα δεν είδα κάτι. Από την άλλη, από τότε που βγήκε το Silverlight 4 να μην έχει αναφερθεί κάτι τέτοιο, δεν είναι λίγο ύποπτο;

     


    Vir prudens non contra ventum mingit
  •  03-05-2011, 22:24 65540 σε απάντηση της 65516

    Απ: Προβλημα silverlight , 100% cpu usage on RequestDeviceAccess

    Απ' οτι φαινετε ειναι τελικα bug του silverlight και οχι δεν ειναι υποπτο το οτι δεν το εχει αναφερει κανενας, δεν εχω δει κ πολλες εφαρμογες με silverlight k mic-cam στο internet.
    Ισως και αλλοι dev να θεωρουν φυσιολογικο 50% usage απο ενα dialog box. Ισως να πιστευουν οτι ολοι οι user πρεπει να εχουν dual-quad core cpus. Ισως να ειναι αναδρομος ο Ερμης..

    http://connect.microsoft.com/VisualStudio/feedback/details/665903/100-cpu-usage-when-wainting-for-user-confirmation-on-requestdeviceaccess#details


  •  03-05-2011, 22:57 65541 σε απάντηση της 65540

    Απ: Προβλημα silverlight , 100% cpu usage on RequestDeviceAccess

    Θα αντισταθώ να απαντήσω κι εγώ με το ίδιο δεικτικό στυλ και θα αναφέρω μόνο ότι:

    • Μπορεί να μην υπάρχουν πολλές εφαρμογές στο internet με mic-cam ωστόσο το affirmation dialog δεν βγαίνει μόνο τότε, βγαίνει σε όλες τις περιπτώσεις που ζητούνται elevated rights. Οπότε σίγουρα θα είχε φανεί αν ήταν common place. Πρότεινα να δοκιμάσεις το on-line code Clipboard.SetText() για να δεις αν έχει την ίδια συμπεριφορά (όπως επίσης πρότεινα να δοκιμάσεις και σε ένα καθαρό PC - έστω και virtual).
    • Το 50% και πάλι στις δικές μου δοκιμές ήταν όσο το pc ήταν idle. Όταν χρειάστηκαν CPU resources άλλες εφαρμογές, έπεσε μέχρι και 8% που σημαίνει ότι είναι ελαστικό.
    • Διάβασε προσεκτικά τι λέει στο Connect: "Thank you for your bug submission. Upon investigation, we have determined the issue you reported has to do with the Silverlight . We have passed your issue along to the Silverlight team for investigation.". Δεν λέει πουθενά ότι είναι bug, ακόμα δεν έχουν πει καν αν είναι reproducable, οπότε προς το παρόν περιμένουμε.

    Όπως και να έχει, μπορεί να εμφανίζεται στα Windows XP, εγώ έχω Windows 7 και παίζω, μπορεί να οφείλεται σε ένα σωρό πράγματα. Απλά το θέμα είναι αν όντως θες βοήθεια, μιας και έχω την εντύπωση ότι είμαστε αντίπαλοι εδώ λες κι έχω γράψει εγώ το Silverlight. Διαφορετικά αν δεν την χρειάζεσαι είμαστε ΟΚ, δεν τρέχει τίποτα, ο καθένας τον δρόμο του.


    Vir prudens non contra ventum mingit
  •  03-05-2011, 23:16 65542 σε απάντηση της 65541

    Απ: Προβλημα silverlight , 100% cpu usage on RequestDeviceAccess

    Όχι αντίπαλοι προς θεού. Την βοήθεια προς το παρόν την βρήκα στο flex4 (όλα απ την αρχή), άπλα το δοκίμασα σε 6 live pc σύνολο με το SL. Και γινόταν σε όλα.
    Μονό στον chrome που δεν έχει plugin-container.exe όπως πχ ο firefox δεν κολουσε άμεσα, μιας κ ο chrome έχει σε κάθε tab διαφορετικό process(όχι thread).

    Άπλα μου φαινότανε ότι το λογικό είναι το dialog αυτό να μην σηκώνει τόσο cpu.
Προβολή Τροφοδοσίας RSS με μορφή XML
Με χρήση του Community Server (Commercial Edition), από την Telligent Systems