(57)【特許請求の範囲】
【請求項１】
マシンにより実施される方法であって、
クラウド同期システムのクラウド・ユーザ・アカウント内に記憶されたマッチング・ファイルのマッチング・ファイル・メタデータ・セットを受信するステップと、
クライアント・デバイス内に記憶されたローカル・ファイルに対する前記マッチング・ファイル・メタデータ・セットの同期検証を実行するステップと、
前記同期検証により判定された同期エラーを記述するテレメトリ・レポートを作成するステップと、
前記テレメトリ・レポートをテレメトリ・サーバに送信するステップと、
前記同期エラーを修正するためのエラー・パッチを有するレビュー・データ・セットを有するレビュー・レポートを、前記テレメトリ・サーバから受信するステップと、
を含む、方法。
【請求項２】
前記クライアント・デバイス内に記憶された前記ローカル・ファイルに対する前記マッチング・ファイル・メタデータ・セットの前記同期検証は、前記ローカル・ファイルと前記マッチング・ファイルとの同期の終了時に実行される、請求項１記載の方法。
【請求項３】
前記マッチング・ファイル・メタデータ・セットから、前記同期エラーのイベント時間を決定するステップ
をさらに含む、請求項１記載の方法。
【請求項４】
前記同期検証のために前記マッチング・ファイル・メタデータ・セットと比較するためのローカル・ファイル・メタデータ・セットを作成するステップ
をさらに含む、請求項１記載の方法。
【請求項５】
前記ローカル・ファイルと前記マッチング・ファイルとの再同期を実行するステップ
をさらに含む、請求項１記載の方法。
【請求項６】
前記テレメトリ・レポートのための、前記ローカル・ファイルと前記マッチング・ファイルとの同期中のアサーション失敗を受信するステップ
をさらに含む、請求項１記載の方法。
【請求項７】
同期パフォーマンス・メトリックを前記テレメトリ・レポートに記録するために、前記ローカル・ファイルと前記マッチング・ファイルとの同期をトラッキングするステップ
をさらに含む、請求項１記載の方法。
【請求項８】
プロセッサに、
クライアント・デバイスから、クラウド・サービスを記述する、前記クライアント・デバイスにて蓄積されたテレメトリ・データ・セットを有するテレメトリ・レポートを受信するステップであって、前記テレメトリ・データ・セットは、前記クライアント・デバイス内に記憶されたローカル・ファイルに対する、クラウド同期システムのクラウド・ユーザ・アカウント内に記憶されたマッチング・ファイルのマッチング・ファイル・メタデータ・セットの同期検証により判定された同期エラーを説明する同期エラー・データを有する、ステップと、
前記同期エラーを修正するためのエラー・パッチを有するレビュー・データ・セットを有するレビュー・レポートを作成するステップと、
前記同期エラーを修正するための前記エラー・パッチを有する前記レビュー・データ・セットを有する前記レビュー・レポートを前記クライアント・デバイスに送信するステップと、
を含む、方法を実行させるプログラム。
【請求項９】
クラウド同期システムのクラウド・ユーザ・アカウント内のマッチング・ファイルと同期されたローカル・ファイルを記憶するデータ・ストレージと、
クラウド・サーバから、前記マッチング・ファイルのマッチング・ファイル・メタデータ・セットを受信するネットワーク・インタフェースと、
前記ローカル・ファイルに対する前記マッチング・ファイル・メタデータ・セットの同期検証を実行し、前記同期検証により判定された同期エラーを記述するテレメトリ・レポートを作成するプロセッサと、
を備え、
前記ネットワーク・インタフェースは、前記テレメトリ・レポートをテレメトリ・サーバに送信し、前記同期エラーを修正するためのエラー・パッチを有するレビュー・データ・セットを有するレビュー・レポートを、前記テレメトリ・サーバから受信する、クライアント・デバイス。
【請求項１０】
前記テレメトリ・レポートは、アサーション失敗データ、同期ストール・データ、及び同期パフォーマンス・メトリックのうち少なくとも１つを有する、請求項９記載のクライアント・デバイス。
【発明の詳細な説明】
【背景技術】
【０００１】
最近のコンピュータ・ユーザは、デスクトップ・コンピュータ、ラップトップ・コンピュータ、タブレット・コンピュータ、又は、「スマートフォン」と呼ばれる計算能力を備えた携帯電話等の複数のコンピュータ・デバイスを有する場合がある。ユーザは、１つのデバイス内のファイルを、複数の他のデバイスにわたるファイルと同期された状態に保つ場合がある。ユーザは、１つのデバイス内のファイルに対する任意の変更を、他のデバイス内のそのファイルの他のコピーに移す場合がある。
【発明の概要】
【課題を解決するための手段】
【０００２】
この概要は、詳細な説明において以下でさらに説明されるコンセプトのうち選択したものを簡略化した形で紹介するために提供される。この概要は、特許請求される主題の主要な特徴又は必要不可欠な特徴を特定することを意図するものではないし、特許請求される主題の範囲を限定するよう使用されることを意図するものでもない。
【０００３】
以下で説明する実施形態は、正確さ及びパフォーマンスを改善するためのクラウド同期システムをトラッキングするテレメトリ・システムに関する。サービス・プロキシは、クラウド同期システムのクラウド・ユーザ・アカウント内に記憶されたマッチング・ファイルのマッチング・ファイル・メタデータ・セットを受信することができる。サービス・プロキシは、クライアント・デバイス内に記憶されたローカル・ファイルに対するマッチング・ファイル・メタデータ・セットの同期検証を実行することができる。サービス・プロキシは、同期検証により判定された同期エラーを記述するテレメトリ・レポートを作成することができる。
【図面の簡単な説明】
【０００４】
上述した利点及び他の利点、並びに特徴を得ることができる態様を説明するために、添付の図面に例示される特定の実施形態を参照することにより、より詳細な記載が説明され提供される。これらの図面は典型的な実施形態のみを表すに過ぎず、したがって、その範囲を限定するものとして考えられるべきではないことを理解されたい。添付の図面を使用することにより、実施例が、追加的な具体性及び詳細さをもって記載され説明される。
【図１】クラウド同期ネットワークの一実施形態のブロック図を示す。
【図２】コンピューティング・デバイスの一実施形態のブロック図を示す。
【図３】マッチング・ファイル・メタデータ・セット・メッセージの一実施形態のブロック図を示す。
【図４】テレメトリ・レポートの一実施形態のブロック図を示す。
【図５】テレメトリ・レコードの一実施形態のブロック図を示す。
【図６】レビュー・レポートの一実施形態のブロック図を示す。
【図７】クライアント・デバイスを用いてローカル・ファイルを同期する方法の一実施形態のフローチャートを示す。
【図８】同期検証を実行する方法の一実施形態のフローチャートを示す。
【図９】クラウド・サーバを用いてマッチング・ファイルを同期する方法の一実施形態のフローチャートを示す。
【図１０】テレメトリ・サーバにおいてテレメトリ・レポートを処理する方法の一実施形態のフローチャートを示す。
【発明を実施するための形態】
【０００５】
実施形態について、以下で詳細に説明する。特定の実施例について説明されるが、これは例示の目的で説明されるに過ぎないことを理解すべきである。当業者は、本開示の主題の精神及び範囲から逸脱することなく、他のコンポーネント及び構成を使用できることを認識するであろう。実施例は、マシンにより実施される方法であってもよいし、少なくとも１つのプロセッサのための、方法を詳述する命令のセットを記憶した有体のマシン読み取り可能な媒体であってもよいし、又は、クライアント・デバイスであってもよい。
【０００６】
ユーザは、タブレット・コンピュータ、ラップトップ・コンピュータ、デスクトップ・コンピュータ、及びスマートフォン等の複数のデバイス上に、データ・ファイルのコピーを維持する場合がある。データ・ファイルは、テキスト・ファイル、デジタル・イメージ・ファイル、オーディオ・ファイル、ビデオ・ファイル、又は実行可能なソフトウェア・アプリケーションであってよい。ユーザは、クラウド・コンピューティングを用いて、そのデータ・ファイルのコピーを保存することができる。クラウド・コンピューティングにより、サービス・プロキシが、ユーザ・デバイスの所定の機能を１以上のネットワーク・デバイスにオフロードすることが可能となる。これがクラウドと呼ばれる。
【０００７】
ユーザは、クラウド・ユーザ・アカウントを用いて、クラウドにより提供される任意のクラウド・サービスにアクセスすることができる。クラウドは、ユーザ・デバイスの代わりに、処理機能及びバックアップ記憶機能を実行することができる。ユーザは、ネットワークを介してユーザに関連付けられた各デバイスに少なくとも断続的に接続されるクラウド・サーバ上にデータ・ファイルのコピーを記憶することができる。データ・ファイルが、１つのユーザ・デバイス上で更新されるたびに、クラウド・ユーザ・アカウントを用いて、データ・ファイルを、クラウド・サーバ上及び任意の他のユーザ・デバイス上のコピーと同期することができる。
【０００８】
テレメトリ・システムは、クラウド同期システム等のクラウド・サービス中に正確さ及びパフォーマンスをトラッキングするために、クラウドの各エンドポイントからデータを収集することができる。クライアント・デバイスは、同期をトラッキングすることができ、テレメトリ・サーバに送信するために、テレメトリ・レポートを作成することができる。クライアント・デバイスは、同期が正しく生じたことを検証するために、ファイル・メタデータを使用することができる。クライアント・デバイスはまた、同期プロセス中に生じたアサーション失敗又は同期ストール（synchronization  stall）をレポートすることができる。
【０００９】
次いで、テレメトリ・サーバは、同期プロセス中に生じた同期エラーを実証して同期エラーの原因を突き止めるために、そのデータを使用することができる。テレメトリ・サーバは、共通エラー又はエラー・パターンを特定することができ、そうしたエラーを修正するために、エラー・パッチを自動的に提供することができる。テレメトリ・サーバは、クライアント・デバイスのユーザ又はクラウド同期システムの管理者に、レビュー・レポートを送信することができる。レビュー・レポートは、テレメトリ・データを、クラウド同期システムをカバーするサービスワイド・パフォーマンス・レコード（service-wide  performance  record）、クラウド同期システム・ユーザの異なる層グループをカバーする集合的ユーザ・パフォーマンス・レコード（aggregate  user  performance  record）、及び個別的ユーザ・パフォーマンス・レコードに整理し得る。
【００１０】
したがって、一実施形態において、テレメトリ・システムは、パフォーマンスを改善するために、クラウド同期システムをトラッキングすることができる。サービス・プロキシは、クラウド同期システムのクラウド・ユーザ・アカウント内に記憶されたマッチング・ファイルのマッチング・ファイル・メタデータ・セットを受信することができる。サービス・プロキシは、クライアント・デバイス内に記憶されたローカル・ファイルに対するマッチング・ファイル・メタデータ・セットの同期検証を実行することができる。サービス・プロキシは、同期検証により判定された同期エラーを記述するテレメトリ・レポートを作成することができる。
【００１１】
図１は、クラウド同期ネットワーク１００の一実施形態のブロック図を示している。クライアント・デバイス１１０は、テキスト・ファイル、デジタル・オーディオ・ファイル、デジタル・イメージ・ファイル、デジタル・ビデオ・ファイル、アプリケーション、又は他のデータ・ファイル等のローカル・ファイル１１２を記憶することができる。クライアント・デバイス１１０は、デスクトップ・コンピュータ、ラップトップ・コンピュータ、ハンドヘルド・コンピュータ、スマートフォン、又は他のコンピューティング・デバイスであってよい。クライアント・デバイス１１０は、クラウド・クライアント・インタフェースとして動作してクラウド同期システム等のクラウド・サービスにサブスクライブするサービス・プロキシ１１４を使用することができる。サービス・プロキシ１１４は、クラウド同期ネットワーク１００全体を通じてローカル・ファイル１１２の同期されたコピーを維持するために、クライアント同期エンジン１１６を実行することができる。
【００１２】
サービス・プロキシ１１４は、クラウド・サーバ１３０に接続するために、データ・ネットワーク接続１２０を用いることができる。クラウド・サーバ１３０は、クライアント・デバイス１１０に関連付けられたユーザのためのクラウド・ユーザ・アカウント１３２を記憶することができる。クラウド・ユーザ・アカウント１３２は、クライアント・デバイス１１０上に記憶されたローカル・ファイル１１２のためのマッチング・ファイル１３４を維持することができる。マッチング・ファイル１３４は、クライアント・デバイス１１０上に記憶されたローカル・ファイル１１２のバージョンのコピーである。クラウド・サーバ１３０は、予め設定されたスケジュールで、あるいは、ローカル・ファイル１１２又はマッチング・ファイル１３４のいずれかが更新されるたびに、ローカル・ファイル１１２とマッチング・ファイル１３４とを同期するために、クラウド同期エンジン１３６を実行することができる。
【００１３】
さらに、関連ユーザ・デバイス１４０は、マッチング・ファイル１３４を維持するクラウド・ユーザ・アカウント１３２のインカネーション（incarnation）として動作する関連サービス・プロキシ１４２を有することができる。関連ユーザ・デバイス１４０は、マッチング・ファイル１３４と、クラウド・サーバ１３０上のマッチング・ファイル１３４又はクライアント・デバイス１１０上のローカル・ファイル１１２のいずれかとを同期するために、関連同期エンジン１４４を使用することができる。関連ユーザ・デバイス１４０は、クラウド・ユーザ・アカウント１３２に登録された任意のデバイスである。関連ユーザ・デバイス１４０は、別のクライアント・デバイス１１０とみなされてもよいし、逆であってもよい。
【００１４】
テレメトリ・サーバ１５０は、クラウド同期システムの正確さ及びパフォーマンスをトラッキングするために、クラウド内にテレメトリ・システムを維持することができる。テレメトリ・サーバ１５０は、クラウド・サーバ１３０を介してアクセスされ得る、あるいは、データ・ネットワーク接続１２０を介して直接的にアクセスされ得る。テレメトリ・サーバ１５０は、クライアント・デバイス１１０又はクラウド・サーバ１３０からテレメトリ・レポートを受信することができる。テレメトリ・レポートは、同期の正確さ及びパフォーマンスを記述するものであり、生じた任意の同期エラーを含む。次いで、テレメトリ・サーバ１５０は、クラウド同期システムのパフォーマンスを記述する、ユーザに示されるレビュー・レポートを、クライアント・デバイス１１０に提供することができる。テレメトリ・サーバ１５０は、共通エラー又はエラー・パターン、及びそうしたエラーを修正することができるエラー・パッチ又はユーザ・アクションを記憶するための既知のエラー・データベース１５２を維持することができる。
【００１５】
図２は、クライアント・デバイス１１０、関連ユーザ・デバイス１４０、クラウド・サーバ１３０、又はテレメトリ・サーバ１５０として動作することができる例示的なコンピューティング・デバイス２００のブロック図を示している。コンピューティング・デバイス２００は、テレメトリ・システム又はクラウド同期システムを実装するために、ハードウェア、ソフトウェア、ファームウェア、及びシステムオンチップ技術のうち１以上を組み合わせることができる。コンピューティング・デバイス２００は、バス２１０、プロセッサ２２０、メモリ２３０、読み取り専用メモリ（ＲＯＭ）２４０、ストレージ・デバイス２５０、入力デバイス２６０、出力デバイス２７０、及びネットワーク・インタフェース２８０を含み得る。バス２１０又は他のコンポーネント間通信システムにより、コンピューティング・デバイス２００のコンポーネント間での通信が可能となる。
【００１６】
プロセッサ２２０は、命令のセットを解釈し実行する少なくとも１つの従来型のプロセッサ又はマイクロプロセッサを含み得る。メモリ２３０は、ランダム・アクセス・メモリ（ＲＡＭ）であってもよいし、又は、プロセッサ２２０により実行される情報及び命令を記憶する別のタイプの動的なストレージ・デバイスであってもよい。メモリ２３０はまた、プロセッサ２２０による命令の実行中に使用される一時変数又は他の中間情報を記憶することもできる。ＲＯＭ２４０は、従来型のＲＯＭデバイス、又は、プロセッサ２２０のための静的な情報及び命令を記憶する別のタイプの静的なストレージ・デバイスを含み得る。ストレージ・デバイス２５０は、例えば、磁気記録媒体又は光記録媒体及びその対応するドライブといった任意のタイプの有体のマシン読み取り可能な媒体を含み得る。有体のマシン読み取り可能な媒体は、トランジトリな媒体又は信号ではなく、マシン読み取り可能なコード又は命令を記憶する物理媒体である。ストレージ・デバイス２５０は、方法を詳述した命令のセットを記憶することができ、命令のセットは、１以上のプロセッサにより実行されるときに、１以上のプロセッサに前述の方法を実行させる。ストレージ・デバイス２５０はまた、テレメトリ・レコードを記憶するための、データベース又はデータベース・インタフェースであってよい。
【００１７】
入力デバイス２６０は、キーボード、マウス、音声認識デバイス、マイクロフォン、ヘッドセット、タッチ・スクリーン等、ユーザが情報をコンピューティング・デバイス２００に入力することを可能にする１以上の従来型の機構を含み得る。出力デバイス２７０は、ディスプレイ、プリンタ、１以上のスピーカ、ヘッドセット、又は、メモリ若しくは磁気ディスク若しくは光ディスク及び対応するディスクドライブ等の媒体等、ユーザに情報を出力する１以上の従来型の機構を含み得る。ネットワーク・インタフェース２８０は、コンピューティング・デバイス２００が他のデバイス又はネットワークと通信することを可能にするトランシーバのような機構を含み得る。ネットワーク・インタフェース２８０は、無線インタフェースであってもよいし、有線インタフェースであってもよいし、又は光インタフェースであってもよい。
【００１８】
コンピューティング・デバイス２００は、例えば、メモリ２３０、磁気ディスク、又は光ディスクといったコンピュータ読み取り可能な媒体に含まれる一連の命令をプロセッサ２２０が実行することに応じて、そのような機能を実行することができる。そのような命令は、ストレージ・デバイス２５０等の別のコンピュータ読み取り可能な媒体からメモリ２３０に読み込まれてもよいし、又は、ネットワーク・インタフェース２８０を介して別個のデバイスからメモリ２３０に読み込まれてもよい。
【００１９】
図３は、マッチング・ファイル・メタデータ・セット・メッセージ３００の一実施形態のブロック図を示している。マッチング・ファイル・メタデータ・セット・メッセージ３００は、マッチング・ファイル・メタデータ・セット・メッセージ３００が送信されている先であるクライアント・デバイス１１０を示すために、クライアント・デバイス・アドレス３０２を有することができる。マッチング・ファイル・メタデータ・セット・メッセージ３００は、マッチング・ファイル・メタデータ・セット３０４をクライアント・デバイス１１０に送信することができる。マッチング・ファイル・メタデータ・セット３０４は、マッチング・ファイル１３４の特性を記述するものである。マッチング・ファイル・メタデータ・セット３０４は、マッチング・ファイル１３４を識別するファイル名３０６、マッチング・ファイル１３４の記憶位置を記述するファイル階層３０８、マッチング・ファイル１３４のサイズ３１０、マッチング・ファイル１３４のファイル・ハッシュ３１２、及び、マッチング・ファイル１３４が変更された最後の時間を識別するタイムスタンプ３１４を有することができる。ファイル・ハッシュ３１２は、ハッシュ関数をマッチング・ファイル１３４の中身に適用することにより生成される値である。マッチング・ファイル１３４のファイル・ハッシュ３１２をローカル・ファイル１１２のファイル・ハッシュ３１２と比較することにより、プロセッサは、マッチング・ファイル１３４がローカル・ファイル１１２と同一であるかどうかを判定することができる。
【００２０】
図４は、テレメトリ・レポート４００の一実施形態のブロック図を示している。テレメトリ・レポート４００は、テレメトリ・レポート４００が送信されている先であるテレメトリ・サーバ１５０を示すために、テレメトリ・サーバ・アドレス４０２を有することができる。テレメトリ・レポート４００は、テレメトリ・データ・セット４０４をテレメトリ・サーバ１５０に送信することができる。テレメトリ・データ・セット４０４は、同期中のクラウド同期システムのパフォーマンスを記述することができる。テレメトリ・データ・セット４０４は、任意の数のタイプのテレメトリ・データを含むことができる。
【００２１】
例えば、テレメトリ・データ・セット４０４は、クライアント・デバイス１１０を説明するユーザ識別子４０６を有することができる。テレメトリ・データ・セット４０４は、ファイル・タイプ及びファイル作成者等、ローカル・ファイル１１２又はマッチング・ファイル１３４を説明するデータ・ファイル記述４０８を有することができる。テレメトリ・データ・セット４０４は、バージョン番号又は開発者等、ローカル・ファイル１１２又はマッチング・ファイル１３４を読むために使用されているソフトウェアを説明するソフトウェア（ＳＷ）記述４１０を有することができる。
【００２２】
テレメトリ・データ・セット４０４は、同期検証により特定された同期エラーを説明する同期エラー・データ４１２を、その同期エラーのイベント時間４１４とともに有することができる。イベント時間４１４は、同期検証の時間ではなく、メタデータ・タイムスタンプ３１４により決定される同期エラーの時間を示すことができる。
【００２３】
アサーション失敗時に取られるアサーション・ログ・データ４１８とともに、テレメトリ・データ・セット４０４内のアサーション失敗データ４１６は、ローカル・ファイル１１２とマッチング・ファイル１３４との同期中に生じたアサーション失敗を記述することができる。アサーション失敗データ４１６は、デバッグ・アサーション、リテール・アサーション、シッピング・アサーション（shipping  assertion）、又は他のアサーション等、任意の失敗したアサーションを、デバッグのためにテレメトリ・サーバ１５０にレポートすることができる。
【００２４】
同期ストール時に取られるストール・ログ・データ４２２とともに、テレメトリ・データ・セット４０４内の同期ストール・データ４２０は、ローカル・ファイル１１２とマッチング・ファイル１３４との同期中に生じた同期ストールを記述することができる。サービス・プロキシ１１４は、同期を進展させるために、自己的に失敗の原因を突き止めようと試みることができる。例えば、アップロードが、「失敗した条件（precondition  failed）」から失敗に終わったが、その後の変更列挙（change  enumeration）が、修正がないこと、及び進展がないことを示すエラーを返す場合、サービス・プロキシ１１４は、ストールを特定することができる。サービス・プロキシ１１４は、クラウド・サービスが、アップロードを許可するまで、又は、クラウド・サービスが、アップロードが失敗した理由を返すまで、さらなる進展がないことに基づいて、ストールを特定することができる。
【００２５】
テレメトリ・データ・セット４０４は、同期が成功したかどうかを含む、ローカル・ファイル１１２とマッチング・ファイル１３４との同期をトラッキングする同期パフォーマンス・メトリック４２４を記述することができる。同期パフォーマンス・メトリック４２４は、成功率又は失敗率、同期コール時間、帯域幅使用、クライアント・デバイス１１０上でのプロセッサ使用率、及び他のメトリック等、同期の実行を記述する。同期パフォーマンス・メトリック４２４は、テレメトリ・プロセスにより使用されるリソースを除外することができる。
【００２６】
図５は、テレメトリ・レコード５００の一実施形態のブロック図を示している。テレメトリ・サーバ１５０は、テレメトリ・レコード５００を記憶することができる。テレメトリ・サーバ１５０又は管理者は、新たな問題を特定するために、テレメトリ・レコード５００をテレメトリ・レポート４００と比較することができる。テレメトリ・レコード５００は、クラウド・ユーザ・アカウント１３２に関連付けられたユーザを記述するユーザ層データ・セット５０２を有することができる。例えば、ユーザ層データ・セット５０２は、ユーザの場所、ユーザにより同期されたファイルのタイプ、並びに、ユーザ及びユーザのファイルに関する他のデータを記述することができる。テレメトリ・レコード５００は、テレメトリ・レポート４００を送信するクライアント・デバイス１１０を説明するデバイス・プロファイル５０４を有することができる。例えば、デバイス・プロファイル５０４は、クライアント・デバイス１１０のタイプ、処理、接続速度、メモリ、又はクライアント・デバイス１１０の他の特性を記述することができる。テレメトリ・レコード５００は、ユーザ層データ・セット５０２及びデバイス・プロファイル５０４を、テレメトリ・データ・セット４０４に関連付けることができる。
【００２７】
図６は、レビュー・レポート６００の一実施形態のブロック図を示している。レビュー・レポート６００は、レビュー・レポート６００が送信されている先のクライアント・デバイス１１０を示すために、クライアント・デバイス・アドレス６０２を有することができる。レビュー・レポート６００は、レビュー・データ・セット６０４をクライアント・デバイス１１０に送信することができる。レビュー・データ・セット６０４は、テレメトリ・レポート４００内で特定された同期エラーを修正するためのエラー・パッチ６０６を有することができる。
【００２８】
レビュー・データ・セット６０４は、サービスワイド・パフォーマンス・レコード６０８、集合的ユーザ・パフォーマンス・レコード６１０、又は個別的ユーザ・パフォーマンス・レコード６１２を有することができる。サービスワイド・パフォーマンス・レコード６０８は、アップ時間、成功率、及びクラウド同期システムのパフォーマンスを説明する他のメトリック等、クラウド同期システムの全体的なパフォーマンスをトラッキングすることができる。さらに、サービスワイド・パフォーマンス・レコード６０８は、マッチング・ファイル１３４を伴わないローカル・ファイル１１２、ローカル・ファイル１１２を伴わないマッチング・ファイル１３４、マッチング・ファイル１３４とは異なるファイル・サイズを有するローカル・ファイル１１２、マッチング・ファイル１３４とは異なるバージョンを有するローカル・ファイル１１２、マッチング・ファイル１３４とは異なるタイムスタンプを有するローカル・ファイル１１２、及び他のメトリック等、クラウド同期システムにより正しく同期されたファイルの数をトラッキングすることができる。集合的ユーザ・パフォーマンス・レコード６１０は、ユーザ・グループのパフォーマンス及び正確さを示すために、層及びパフォーマンス傾向に基づいてユーザのグループを収集することができる。個別的ユーザ・パフォーマンス・レコード６１２は、クライアント・デバイス１１０のユーザに関連付けられたデバイスのパフォーマンス及び正確さをトラッキングすることができる。あるいは、個別的ユーザ・パフォーマンス・レコード６１２は、クライアント・デバイス１１０に限定されてもよい。個別的ユーザ・パフォーマンス・レコード６１２は、ユーザがカスタマイズ可能なタイムライン６１４として表現することができる。ユーザは、タイムライン・フォーム内にどのメトリックを表示すべきかを選択することにより、ユーザがカスタマイズ可能なタイムライン６１４をカスタマイズすることができる。
【００２９】
図７は、クライアント・デバイス１１０を用いてローカル・ファイル１１２を同期する方法７００の一実施形態のフローチャートを示している。サービス・プロキシ１１４は、ローカル・ファイル１１２をクライアント・デバイス１１０上に記憶することができる（ブロック７０２）。サービス・プロキシ１１４は、ローカル・ファイル１１２を、クラウド同期システムのクラウド・ユーザ・アカウント１３２内に記憶されたマッチング・ファイル１３４と同期することができる（ブロック７０４）。サービス・プロキシ１１４は、同期パフォーマンス・メトリック４２４をテレメトリ・レポート４００に記録するために、ローカル・ファイル１１２とマッチング・ファイル１３４との同期をトラッキングすることができる（ブロック７０６）。サービス・プロキシ１１４は、クラウド・サーバ１３０又は関連ユーザ・デバイス１４０の少なくとも一方から、クラウド同期システムのクラウド・ユーザ・アカウント内に記憶されたマッチング・ファイル１３４のマッチング・ファイル・メタデータ・セット３０４を受信することができる（ブロック７０８）。サービス・プロキシ１１４は、同期検証のためにマッチング・ファイル・メタデータ・セット３０４と比較するためのローカル・ファイル・メタデータ・セットを作成することができる（ブロック７１０）。
【００３０】
サービス・プロキシ１１４は、同期パフォーマンス・メトリック４２４をテレメトリ・レポート４００に記録することができる（ブロック７１２）。サービス・プロキシ１１４は、ローカル・ファイル１１２とマッチング・ファイル１３４との同期の終了時に、クライアント・デバイス１１０内に記憶されたローカル・ファイル１１２に対するマッチング・ファイル・メタデータ・セット３０４の同期検証を実行することができる（ブロック７１４）。同期検証により、同期エラーが生じたと判定された場合（ブロック７１６）、サービス・プロキシ１１４は、同期エラー・データ４１２及びイベント時間４１４を、テレメトリ・レポート４００に記録することができる（ブロック７１８）。サービス・プロキシ１１４は、ローカル・ファイル１１２とマッチング・ファイルとの再同期を実行することができる（ブロック７２０）。サービス・プロキシ１１４が、ローカル・ファイル１１２とマッチング・ファイル１３４との同期中にアサーション失敗を受信した場合（ブロック７２２）、サービス・プロキシ１１４は、アサーション失敗４１６及びアサーション・ログ・データ・セット４１８を、テレメトリ・レポート４００に記録することができる（ブロック７２４）。サービス・プロキシ１１４が、ローカル・ファイル１１２とマッチング・ファイル１３４との同期中に同期ストールを認識した場合（ブロック７２６）、サービス・プロキシ１１４は、同期ストール４２０及びストール・ログ・データ・セット４２２を、テレメトリ・レポート４００に記録することができる（ブロック７２８）。サービス・プロキシ１１４は、同期検証により判定された同期パフォーマンス、同期エラー４１２及びイベント時間４１４、アサーション失敗４１６及びアサーション・ログ・データ・セット４１８、並びに、同期ストール４２０及びストール・ログ・データ・セット４２２を記述するために、テレメトリ・レポート４００を作成することができる（ブロック７３０）。サービス・プロキシ１１４は、テレメトリ・レポート４００をテレメトリ・サーバ１５０に送信することができる（ブロック７３２）。
【００３１】
図８は、同期検証を実行する方法８００の一実施形態のフローチャートを示している。サービス・プロキシ１１４は、ファイル名３０６及びファイル階層３０８を用いて、マッチング・ファイル１３４と対応するローカル・ファイル１１２を特定することができる（ブロック８０２）。サービス・プロキシ１１４は、マッチング・ファイル・メタデータ・セット３０４をローカル・ファイル・メタデータ・セットと比較することができる（ブロック８０４）。マッチング・ファイル・メタデータ・セット３０４のサイズが、ローカル・ファイル・メタデータ・セットのサイズと異なる場合（ブロック８０６）、サービス・プロキシ１１４は、同期エラーを特定することができる（ブロック８０８）。マッチング・ファイル・メタデータ・セット３０４のファイル・ハッシュ３１２が、ローカル・ファイル・メタデータ・セットのファイル・ハッシュと異なる場合（ブロック８１０）、サービス・プロキシ１１４は、同期エラーを特定することができる（ブロック８０８）。サービス・プロキシ１１４は、マッチング・ファイル・メタデータ・セット３０４のタイムスタンプ３１４から、同期エラーのイベント時間を決定することができる（ブロック８１２）。
【００３２】
クライアント・デバイス１１０により実行されるテレメトリ機能の多くは、クラウド・サーバ１３０により実行されてもよい。図９は、クラウド・サーバを用いてマッチング・ファイルを同期する方法９００の一実施形態のフローチャートを示している。クラウド・サーバ１３０は、クライアント・デバイス１１０に記憶されたローカル・ファイル１１２を、クラウド同期システムのクラウド・ユーザ・アカウント１３２内に記憶されたマッチング・ファイル１３４と同期することができる（ブロック９０２）。クラウド・サーバ１３０は、ローカル・ファイル１１２とマッチング・ファイル１３４との同期をトラッキングすることができる（ブロック９０４）。クラウド・サーバ１３０は、クラウド同期システムのクラウド・ユーザ・アカウント１３２内に記憶されたマッチング・ファイル１３４のマッチング・ファイル・メタデータ・セット３０４を受信することができる（ブロック９０６）。クラウド・サーバ１３０は、同期検証のためにマッチング・ファイル・メタデータ・セット３０４と比較するためのローカル・ファイル・メタデータ・セットを受信することができる（ブロック９０８）。
【００３３】
クラウド・サーバ１３０は、同期パフォーマンス・メトリック４２４をテレメトリ・レポート４００に記録することができる（ブロック９１０）。クラウド・サーバ１３０は、クライアント・デバイス１１０内に記憶されたローカル・ファイル１１２に対するマッチング・ファイル・メタデータ・セット３０４の同期検証を実行することができる（ブロック９１２）。同期検証により、同期エラーが生じたと判定された場合（ブロック９１４）、クラウド・サーバ１３０は、同期エラー・データ４１２及びイベント時間４１４を、テレメトリ・レポート４００に記録することができる（ブロック９１６）。クラウド・サーバ１３０は、ローカル・ファイル１１２とマッチング・ファイル１３４との再同期を実行することができる（ブロック９１８）。クラウド・サーバ１３０が、ローカル・ファイル１１２とマッチング・ファイル１３４との同期中にアサーション失敗を受信した場合（ブロック９２０）、クラウド・サーバ１３０は、アサーション失敗４１６及びアサーション・ログ・データ・セット４１８を、テレメトリ・レポート４００に記録することができる（ブロック９２２）。クラウド・サーバ１３０が、ローカル・ファイル１１２とマッチング・ファイル１３４との同期中に同期ストールを認識した場合（ブロック９２４）、クラウド・サーバ１３０は、同期ストール４２０及びストール・ログ・データ・セット４２２を、テレメトリ・レポート４００に記録することができる（ブロック９２６）。クラウド・サーバ１３０は、同期検証により判定された同期パフォーマンス、同期エラー４１２及びイベント時間４１４、アサーション失敗４１６及びアサーション・ログ・データ・セット４１８、並びに、同期ストール４２０及びストール・ログ・データ・セット４２２を記述するために、テレメトリ・レポート４００を作成することができる（ブロック９２８）。クラウド・サーバ１３０は、テレメトリ・レポート４００をテレメトリ・サーバ１５０に送信することができる（ブロック９３０）。
【００３４】
図１０は、テレメトリ・サーバ１５０においてテレメトリ・レポートを処理する方法１０００の一実施形態のフローチャートを示している。テレメトリ・サーバ１５０は、クライアント・デバイス１１０から、ユーザのクラウド・ユーザ・アカウント１３２に関連付けられたクラウド・サービスを記述する、クライアント・デバイス１１０にて蓄積されたテレメトリ・データ・セット４０４を有するテレメトリ・レポート４００を受信することができる（ブロック１００２）。テレメトリ・サーバ１５０は、テレメトリ・データ・セット４０４を、クラウド・ユーザ・アカウント１３２のユーザ層データ・セット５０２に関連付けることができる（ブロック１００４）。テレメトリ・サーバ１５０は、テレメトリ・データ・セット４０４を、クライアント・デバイス１１０のデバイス・プロファイル５０４に関連付けることができる（ブロック１００６）。
【００３５】
テレメトリ・サーバ１５０は、マッチング・エラーを見つけるために、テレメトリ・レポート４００内の同期エラーを既知のエラー・データベース１５２と比較することができる（ブロック１００８）。既知のエラー・データベース１５２が、マッチング・エラーを生成した場合（ブロック１０１０）、テレメトリ・サーバ１５０は、マッチング・エラーに基づいて、レビュー・レポート６００のエラー・パッチ６０６を選択することができる（ブロック１０１２）。テレメトリ・サーバ１５０は、その後にエラー・パッチが作成された場合、更新されたレビュー・レポート６００を送信することができる。テレメトリ・サーバ１５０は、レビュー・レポート６００のサービスワイド・パフォーマンス・レコード６０８を収集することができる（ブロック１０１４）。テレメトリ・サーバ１５０は、レビュー・レポート６００の集合的ユーザ・パフォーマンス・レコード６１０を収集することができる（ブロック１０１６）。テレメトリ・サーバ１５０は、レビュー・レポート６００の個別的ユーザ・パフォーマンス・レコード６１２を収集することができる（ブロック１０１８）。テレメトリ・サーバ１５０は、個別的ユーザ・パフォーマンス・レコード６１２に基づいて、ユーザがカスタマイズ可能なタイムライン６１４を作成することができる（ブロック１０２０）。テレメトリ・サーバ１５０は、テレメトリ・データ・セット４０４に部分的に基づいて、レビュー・レポート６００を作成することができる（ブロック１０２２）。レビュー・レポート６００は、サービスワイド・パフォーマンス・レコード６０８、集合的ユーザ・パフォーマンス・レコード６１０、個別的ユーザ・パフォーマンス・レコード６１２、又はユーザがカスタマイズ可能なタイムライン６１４を有することができる。テレメトリ・サーバ１５０は、レビュー・レポート６００をクライアント・デバイス１１０に送信することができる（ブロック１０２４）。
【００３６】
主題が、構造的特徴及び／又は方法論的動作に特有の言葉で説明されてきたが、添付の特許請求の範囲における主題は、上述した特定の特徴又は動作に必ずしも限定される必要がないことを理解すべきである。むしろ、上述した特定の特徴及び動作は、請求項を実施するための例示的な形態として開示されたものである。
【００３７】
本発明の範囲内にある実施形態はまた、記憶されたコンピュータ実行可能命令又はデータ構造を運ぶ又は有する非トランジトリなコンピュータ読み取り可能な記憶媒体を含み得る。そのような非トランジトリなコンピュータ読み取り可能な記憶媒体は、汎用コンピュータ又は専用コンピュータによりアクセスされ得る任意の利用可能な媒体とすることができる。限定ではなく、例として、そのような非トランジトリなコンピュータ読み取り可能な記憶媒体は、ＲＡＭ、ＲＯＭ、ＥＥＰＲＯＭ、ＣＤ−ＲＯＭ、若しくは他の光ディスク・ストレージ・デバイス、磁気ディスク・ストレージ・デバイス若しくは他の磁気ストレージ・デバイス、又は、コンピュータ実行可能命令若しくはデータ構造の形態の所望のプログラム・コード手段を運ぶあるいは記憶するために使用され得る任意の他の媒体を含み得る。上記の組合せもまた、非トランジトリなコンピュータ読み取り可能な記憶媒体の範囲内に含まれるべきでる。
【００３８】
実施形態はまた、タスクが通信ネットワークを介して（有線リンク、無線リンク、又はそれらの組合せにより）リンクされるローカル処理デバイス及びリモート処理デバイスにより実行される分散コンピューティング環境においても実行され得る。
【００３９】
コンピュータ実行可能命令は、例えば、汎用コンピュータ、専用コンピュータ、又は専用処理デバイスに所定の機能又は機能の一群を実行させる命令及びデータを含む。コンピュータ実行可能命令はまた、スタンドアロン環境又はネットワーク環境におけるコンピュータにより実行されるプログラム・モジュールも含む。一般に、プログラム・モジュールは、特定のタスクを実行するか、あるいは特定の抽象データ型を実装するルーチン、プログラム、オブジェクト、コンポーネント、及びデータ構造等を含む。コンピュータ実行可能命令、関連するデータ構造、及びプログラム・モジュールは、本明細書で開示した方法のステップを実行するプログラム・コード手段の例を表す。特定の一連のそのような実行可能命令又は関連するデータ構造は、そのようなステップにおいて記載される機能を実装する対応する動作の例を表す。
【００４０】
上記の説明は、特定の詳細を含み得るが、そのような詳細は、請求項を限定するものとして解釈すべきではない。説明した実施形態の他の構成も、本開示の範囲の一部である。例えば、本開示の原理を各個別のユーザに適用することができ、各ユーザは、個別にそのようなシステムを展開することができる。多数の可能な用途のいずれか１つが本明細書で説明した機能を使用しない場合であっても、これにより、各ユーザは、本開示の利点を利用することが可能となる。電子デバイスの多くの例の各々が、様々な形で、本内容を処理することができる。実施例は、必ずしも、全てのエンドユーザにより使用される一システムに含まれる必要はない。したがって、提供された特定の例ではなく、添付の請求項及びその正当な均等な構成だけが、本発明を定めるべきである。
【図１】
0006385336.tif 000002
【図２】
0006385336.tif 000003
【図３】
0006385336.tif 000004
【図４】
0006385336.tif 000005
【図５】
0006385336.tif 000006
【図６】
0006385336.tif 000007
【図７】
0006385336.tif 000008
【図８】
0006385336.tif 000009
【図９】
0006385336.tif 000010
【図１０】
0006385336.tif 000011